У меня есть два вложенных массива разной длины. Я хочу сделать длину второго массива в соответствии с первым массивом, см. Примеры ниже, чтобы понять. Просто удалите все элементы, которых нет в первом массиве. Иногда второй массив имеет больше значений, чем первый массив, в этом случае моя древовидная структура ломается. Эти массивы являются вложенными массивами, поэтому простой array_slice не работает.
Вот структура массива.
Первый массив
"1": {
"id": "1",
"username": "username",
"children": [
{
"id": "-1",
"username": "NULL",
"children": [
{
"id": "-1",
"username": "NULL",
"children": [
{
"id": "-1",
"username": "NULL",
"children": []
}
]
}
]
}
]
}
Второй массив
"157": {
"id": "157",
"username": "test1",
"children": [
{
"id": "158",
"username": "test1",
"children": [
{
"id": "159",
"username": "test2",
"children": [
{
"id": "160",
"username": "test3",
"children": []
},
{
"id": "160",
"username": "KICK ME BECAUSE I M NOT EXIST IN FIRST ARRAY",
"children": []
}
]
}
]
},
{
"id": "160",
"username": "KICK ME BECAUSE I M NOT EXIST IN FIRST ARRAY",
"children": [
{
"id": "159",,
"username": "KICK ME BECAUSE I M NOT EXIST IN FIRST ARRAY",
"children": [
{
"id": "161",
"username": "KICK ME BECAUSE I M NOT EXIST IN FIRST ARRAY",
"children": []
}
]
}
]
}
]
}
Ожидаемый результат
"157": {
"id": "157",
"username": "test1",
"children": [
{
"id": "158",
"username": "test1",
"children": [
{
"id": "159",
"username": "test2",
"children": [
{
"id": "160",
"username": "test3",
"children": []
},
]
}
]
},
]
}
Я пробую этот метод, но он не работает.
$firstCount = (array_map('count', $actualTree));
$secondCount = (array_map('count', $emptyTree));
$chunk = array_slice($actualTree, 0 , $second[$this->userId], true);
Вариант использования
Я хочу полностью удалить те дочерние элементы массива, которых нет в первом массиве. Я строю бинарное дерево до трех уровней. В первом массиве уже есть двоичное дерево с пустыми значениями. Второй массив - это данные, поступающие из базы данных, и я просто заменяю пустые данные фактическими данными с помощью array_replace. Это работает хорошо, пока второй массив не будет иметь больше значений, чем первый массив. Итак, чтобы он заработал, мне нужно удалить эти лишние элементы.
Может ли кто-нибудь помочь мне сделать там такую же длину. Любая помощь будет оценена по достоинству. Заранее спасибо.