У меня есть следующая проблема:
У меня есть массив 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"}]
Как я могу сделать это?
Я уже прочитал много подобных вопросов, я использовал их ответы, чтобы добраться до этой точки, однако я не нашел решения для этого вывода.
Заранее большое спасибо!
Это связано с тем, что в исходном массиве есть два массива с индексами 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
может быть неправильно, но следуйте концепции.
на вашем массиве должно быть:
$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.
Я из Вьетнама. Мой английский не очень хорош. Итак, я пишу этот код. Я надеюсь, что это поможет вам.
$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));
Ну, вы могли бы реструктурировать их и поместить в новый. Пример:
$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);
Пример вывода, как указано выше.