У меня проблемы с родительским массивом, который содержит несколько дочерних массивов. Необходимо, чтобы дочерний массив не содержал других дочерних массивов, но если это так, то поднимать эти внуки массива на уровень дочерних элементов.
[0] => Array (
[0] => Array (
[name] => ...
[count] => ...
[url] => ...
[html] => ...
)
[1] => Array (
[name] => ...
[count] => ...
[url] => ...
)
[2] => Array (
[1] => Array (
[name] => ...
[count] => ...
[url] => ...
[html] => ...
)
[2] => Array (
[name] => ...
[count] => ...
[url] => ...
)
)
[3] => Array (
[name] => ...
[count] => ...
[url] => ...
)
[4] => Array (
[name] => ...
[count] => ...
[url] => ...
)
);
В примере array["2"] содержит 2 массива, я хочу, чтобы 2 массива поднялись на один уровень и стали братьями, а не детьми.
Не могли бы вы мне помочь с правильной функцией?
function transformMultipleArraysTo1(array $multipleArrays = null)
{
$newArray = array();
if (!isArrayEmpty($multipleArrays)) {
foreach ($multipleArrays as $array) {
if (is_array($array)) {
foreach ($array as $singleArray) {
if (is_array($singleArray)) {
$newArray[] = $singleArray;
} else {
continue 2;
}
}
$newArray[] = $array;
}
}
}
return $newArray;
}
Большое спасибо
Йона, пожалуйста, добавьте это к вопросу
Это не дубликат, потому что мне нужно хранить ключи и значения!
Можно ли вообще получить массив, в котором внуки являются массивами? Под этим я подразумеваю, возможно ли в вашем коде, что вы мая получите массив, как вы описали? И если да, можно ли этого избежать?






Я придумал это решение, не самое красивое, но оно работает.
function RemoveThoseNastyGrandchildren(array $array = NULL){
foreach ($array as $ckey => $child) {
foreach($child as $gckey => $grandchild){
if (is_array($grandchild)){
$array[] = $grandchild;
array_splice($array[$ckey],$gckey);
}
}
}
$length = count($array);
for($i = 0; $i < $length ; $i++){
if (!empty($array[$i][0]) && is_array($array[$i][0])){
array_splice($array,$i,1);
$i = -1;
$length = count($array);
}
}
//print("<pre>".print_r($array,true)."</pre>"); <---- To print it pretty uncomment
return $array;
}
переберем всех родственников в поисках потенциальных внуков. Если он найдет одного из этих мерзких внуков, он присоединит его к своим родителям, снова став великийдети.
После этого нам остается только разобрать тела бывших внуков, и вот что ...
Он перебирает измененный массив в поисках пустых тел.
Затем верните недавно сформированные множествосемейное древо и свист, вы избавились от этих GC.
«if ($ array [$ i] [0] === NULL)» - не лучший вариант! но "if (! empty ($ array [$ i] [0]) && is_array ($ array [$ i] [0])" В любом случае, большое спасибо :)
@YonaSmilevitch Я соответственно отредактировал ответ. Примите его, если ответ вас информирует и решил вашу проблему.
Это именно то, что я сделал
Привет, Йона, не могли бы вы поделиться кодом, который вы уже пытались написать? Таким образом мы можем помочь вам исправить это