Я использую плагин jQuery, который генерирует следующий массив:
array:4 [
0 => array:1 [
"page_id" => "1"]
1 => array:2 [
"page_id" => "2""children" => array:1 [
0 => array:2 [
0 => array:2 [
"page_id" => "10""children" => array:1 [
0 => array:2 [
0 => array:1 [
"page_id" => "12"]
1 => array:1 [
"page_id" => "13"]
]
]
]
1 => array:1 [
"page_id" => "11"]
]
]
]
2 => array:1 [
"page_id" => "4"]
3 => array:1 [
"page_id" => "3"]
]
Этот массив является динамическим, поэтому может быть больше вложенных массивов. Мне нужно немного очистить массив. Как вы можете видеть под page_id => 2 есть дети. Он содержит один бесполезный массив (0 => массив: 2).
Можно ли убрать этот бесполезный массив? Мне действительно нужно, чтобы восстановить позиции пунктов меню … Есть идеи?
Вы можете использовать рекурсивный алгоритм:
function removeUselessArrays($array) {
$newArray = [];
foreach ($array as $key => $value) {
if (is_array($value)) {
if (array_keys($value) === [ 0 ]) {
$newArray[$key] = removeUselessArrays($value[0]);
} else {
$newArray[$key] = removeUselessArrays($value);
}
} else {
$newArray[$key] = $value;
}
}
return $newArray;
}
Смотрите код работает Вот.
Вы можете сделать это из цикла следующим образом:
АЛГОРИТМ:
<?php
foreach($arr as $key=>$val){
foreach($val as $index=>$item){
if( is_array($item) ){
$children = ["page_id"=>$item[0]["page_id"]];
$children = array_merge($children, $item[0][$index]);
$arr[$key][$index] = $children;
}
}
}
ТЕСТОВОЕ ЗАДАНИЕ
<?php
// LOOP THROUGH THE ARRAY CONTAINING UNWANTED ELEMENT(S)
foreach($arr as $key=>$val){
foreach($val as $index=>$item){
// CHECK IF ONE OF THE SUB-ELEMENTS IS AN ARRAY & HAS KEY: children
if( is_array($item) ){
// IF SO; GET THE CHILDREN ELEMENT OFF THAT ITEM
// AND STORE IT IN A VARIABLE...
$children = $item[0][$index];
// NOW SET THE SUB-ELEMENT TO THE $children
$children = ["page_id"=>$item[0]["page_id"]];
$children = array_merge($children, $item[0][$index]);
$arr[$key][$index] = $children;
}
}
}
// DUMP-OUT THE OUTPUT:
var_dump($arr);
// PRODUCES:::
array (size=4)
0 =>
array (size=1)
'page_id' => string '1' (length=1)
1 =>
array (size=2)
'page_id' => string '2' (length=1)
'children' =>
array (size=3)
'page_id' => string '10' (length=1)
0 =>
array (size=1)
'page_id' => string '12' (length=1)
1 =>
array (size=1)
'page_id' => string '13' (length=1)
2 =>
array (size=1)
'page_id' => string '4' (length=1)
3 =>
array (size=1)
'page_id' => string '3' (length=1)
Быстрый тест найден Вот.