Вы можете начать, взглянув на array_reduce
. Ниже приведен пример кода, который может начаться с . Поскольку вы еще не полностью описали ожидаемый результат, приведенный ниже код демонстрирует только то, что я мог бы сделать из него.
Примечание: Я вижу много краевых случаев в том, как у вас есть структура данных. Например: что, если первый элемент массива содержит несколько записей? Как бы вы объединили его в таком случае?
<?php
$arr = array(
array('tree' => array('apple', 'pear', 'quantity' => 1)),
array('house' => array('door', 'window', 'quantity' => 1)),
array('house' => array('door', 'window', 'quantity' => 1)),
);
$res = array_reduce($arr, function($state, $item){
foreach($item as $key => $value) {
if (isset($state[$key])) {
$state[$key]['quantity']++;
} else {
$state[$key] = $value;
}
}
return $state;
});
var_dump($res)
?>
Выход:
array(2) {
["tree"]=> array(3) {
[0]=> string(5) "apple"
[1]=> string(4) "pear"
["quantity"]=> int(1)
}
["house"]=> array(3) {
[0]=> string(4) "door"
[1]=> string(6) "window"
["quantity"]=> int(2)
}
}
Можете ли вы привести пример, как он должен выглядеть? –
Вы могли бы объяснить немного больше? вы хотите 'cal_your_function ($ arr)' вернуть только две строки в этом конкретном случае? какая строка мачты будет удалена? Второй? Третий? любой второй или третий? дайте нам больше информации, пожалуйста, больше примеров? – Alex