Преобразование массива PHP в объект Json

У меня есть следующая проблема:

У меня есть массив PHP выглядит так:

Array (
[0] => Array (
[0] => Array ( [sales_count] => 2 )
[1] => Array ( [customer_id] => 1 )
)
[1] => Array (
[0] => Array ( [sales_count] => 3 )
[1] => Array ( [customer_id] => 2 )
)
)

Теперь, если я использую json_encode для этого массива, я получу следующий результат:

[[{"sales_count":"2"},{"customer_id":"1"}],[{"sales_count":"3"},{"customer_id":"2"}]]

Тем не менее, я пытаюсь получить следующий вывод:

 [{"sales_count":"2","customer_id":"1"},{"sales_count":"3","customer_id":"2"}]

Как я могу сделать это?
Я уже прочитал много подобных вопросов, я использовал их ответы, чтобы добраться до этой точки, однако я не нашел решения для этого вывода.

Заранее большое спасибо!

1

Решение

Это связано с тем, что в исходном массиве есть два массива с индексами 0 и 1

Вам нужно сделать что-то вроде этого

$masterArray = Array (
[0] => Array (
[0] => Array ( [sales_count] => 2 )
[1] => Array ( [customer_id] => 1 )
)
[1] => Array (
[0] => Array ( [sales_count] => 3 )
[1] => Array ( [customer_id] => 2 )
)
);

$json_array = array_merge($masterArray[0], $masterArray[1]);

echo json_encode($json_array);

Синтаксис для $masterArray может быть неправильно, но следуйте концепции.

3

Другие решения

на вашем массиве должно быть:

$data = array(
array("sales_count" => 2),
array("customer_id" => 1),
array("sales_count" => 2),
array("customer_id" => 1),
);
json_encode($data);

для вас, чтобы достичь ожидаемого результата.

хотя, если ваш массив правильный, вы можете получить доступ к вашему объекту json

var data = [
[
{"sales_count":"2"},
{"customer_id":"1"}
],
[
{"sales_count":"3"},
{"customer_id":"2"}
]
];

data[0][0].sales_count will access sales_count = 2 on your 1st array.
2

Я из Вьетнама. Мой английский не очень хорош. Итак, я пишу этот код. Я надеюсь, что это поможет вам.

 $arr = array(
0 => array(0 => array('sales_count'=>2),1 => array('customer_id' => 1)),
1 => array(0 => array('sales_count'=>3),1 => array('customer_id' => 2)),
);
$new_arr = array();
foreach($arr as $key => $value){
foreach($value as $kvalue => $vvalue){
$new_arr[] = $vvalue;
}
}
print_r(json_encode($new_arr));
2

Ну, вы могли бы реструктурировать их и поместить в новый. Пример:

$new_array = array();
array_walk_recursive($array, function($val, $key) use (&$new_array) {
$new_array[] = array($key => $val);
});

$new_array = json_encode($new_array);
echo '<pre>';
print_r($new_array);
// [{"sales_count":2},{"customer_id":1},{"sales_count":3},{"customer_id":2}]

Или просто простой цикл, просто вставьте их внутрь:

$new_array = array();
foreach($array as $values) {
foreach($values as $val) {
$new_array[] = $val;
}
}

echo json_encode($new_array);

Пример вывода, как указано выше.

2
По вопросам рекламы [email protected]