Array
(
[0] => Array
(
[id] => 50
[append_parent] => 51
[data] => Array
(
[0] => Array
(
[id] => 43
[append_parent] =>
)
[1] => Array
(
[id] => 44
[append_parent] =>
)
)
)
[1] => Array
(
[id] => 51
[append_parent] =>
[data] => Array
(
[0] => Array
(
[id] => 41
[append_parent] =>
)
[1] => Array
(
[id] => 42
[append_parent] => 43
)
)
)
)
Это пример массива, я пытаюсь работать в этом многомерном массиве, чтобы перемещать (не копировать, а перемещать) массивы / элементы как дочерние массивы / элементы, если этот массив имеет значение, указанное в append_parentстолбец, соответствующий столбцу идентификатора массива / элементов.Например, если массив имеет append_parent = 42, он должен стать дочерним массивом / элементом для массива / элемента, который имеет столбец с id = 42. Таким же образом все массивы / элементы со значениями в столбце append_parent должны стать дочерними массивами /элементы к массивам, которые соответствуют значению в столбцах id.
Я пытаюсь использовать следующий подход, но нигде не достигаю
function SearchAndAppend($array, $col, $value) {
foreach($array as $key => $val) {
$temp_array = array();
$temp_array = $array;
if (!is_array($val)) {
if ($key == $col && $val == $value){
$temp_array[] = $element_to_append;
}
} else {
if ($this->SearchAndAppend($val, $col, 42))
$temp_array[] = $element_to_append;
}
}
return $temp_array;
}
$sorted_array = $this->SearchAndAppend($arr, "id", "append_parent");
Массив при необходимости
$a1[0] = array("id"=>"34", "append_parent"=>"42");
$a1[1] = array("id"=>"35", "append_parent"=>"41");
$a1[0] = array("id"=>"36", "append_parent"=>"");
$a1[1] = array("id"=>"37", "append_parent"=>"44");
$x1[0] = array("id"=>"41", "append_parent"=>"");
$x1[1] = array("id"=>"42", "append_parent"=>"43");
$x2[0] = array("id"=>"43", "append_parent"=>"");
$x2[1] = array("id"=>"44", "append_parent"=>"");
$arr[0] = array("id"=>"50", "append_parent"=>"51", "data"=>$x2);
$arr[1] = array("id"=>"51", "append_parent"=>"", "data"=>$x1);