Jake Ols
Jake Ols

Reputation: 2852

preg_replace remove [] around array

I currently have an array that looks like this:

    [[{"name":"Shirt","data":[1,1,5,5,1,10000]},{"name":"Skittles","data":[1,9,1,1]}]]

I'm using:

        preg_replace('/"([^"]+)"\s*:\s*/', '$1:',json_encode($results));

to create an array that should look like this:

    [{"name":"Shirt","data":[1,1,5,5,1,10000]},{"name":"Skittles","data":[1,9,1,1]}]

However I can't seem to get rid of the extra set of brackets.

My model:

    function get_data()
   {
$this->db->select('ItemName, QuantitySold');
$query = $this->db->get('transactions');

$results = array();

foreach ($query->result_array() as $row)
{
    if(!isset($results[$row['ItemName']]))
        $results[$row['ItemName']] = array('name' => $row['ItemName'], 'data' => array());
    $results[$row['ItemName']]['data'][] = $row['QuantitySold'];
}

//Rekey arrays so they aren't associative
$results = array_values($results);
return $results;

}

My controller:

    function test()
{
    $this->load->model('data');
    $series_data[] = $this->data->get_data();
    $data['series_data'] = json_encode($series_data, JSON_NUMERIC_CHECK);
    preg_replace('/"([^"]+)"\s*:\s*/', '$1:',json_encode($series_data));
    $this->load->view('chart', $data);
}

thanks in advance.

Upvotes: 1

Views: 630

Answers (1)

Mark Baker
Mark Baker

Reputation: 212442

Why use preg_replace.... this is simply json encoded data:

$string = '[[{"name":"Shirt","data":[1,1,5,5,1,10000]},{"name":"Skittles","data":[1,9,1,1]}]]';
var_dump(
    json_encode(
        json_decode($string)[0]
    )
);

Upvotes: 3

Related Questions