#javascript #php #arrays #json #multidimensional-array
#javascript #php #массивы #json #многомерный-массив
Вопрос:
У меня есть массив, строка и массив имеют одинаковые имена «item», один экземпляр является массивом, а другой — строкой в массиве, я хотел бы удалить всю строку «item» из массива
Массив;
//JSON
[{
"id":"109",
"text":"dashboard",
"items":[ //to be ignored
{
"id":"1",
"text":"financial_dashboard",
"items":"109" //to be deleted
},
{
"id":"108",
"text":"project_dashboard",
"items":"109" //to be deleted
}
]
}]
//Array PHP
(
[0] => Array
(
[id] => 109
[expanded] => true
[text] => Dashboard
[items] => Array //to be ignored
(
[0] => Array
(
[id] => 1
[expanded] => true
[text] => Financial Dashboard
[items] => 109 //to be deleted
)
[1] => Array
(
[id] => 108
[expanded] => true
[text] => Project Dashboard
[items] => 109 //to be deleted
)
)
))
Есть предложения?
Комментарии:
1. Это JSON, верно?
2. вы должны знать, как работает массив, этот многомерный массив, который вы можете удалить, удалив: array[0] [0], array [0] [1]
3.
for (i = 0; i < arr.length; i ) { for (j = 0; j < arr[i].items.length; j ) {arr[i].items[j].items = undefined}
Ответ №1:
Вы могли бы сделать с двумя вложенными картами следующим образом;
var arr = [{
"id":"109",
"text":"dashboard",
"items":[ //to be ignored
{
"id":"1",
"text":"financial_dashboard",
"items":"109" //to be deleted
},
{
"id":"108",
"text":"project_dashboard",
"items":"109" //to be deleted
}
]
}];
function delNestedItems(a){
return a.map(o => (o.items.map(q => (delete q.items,q)),o));
}
console.log(delNestedItems(arr))
Ответ №2:
вы должны знать, как работает массив, этот многомерный массив, который вы можете удалить, удалив: array[0][0] и array [0][1]
unset($a[0][0]);
unset($a[0][1]);
Ответ №3:
Вы могли бы использовать рекурсивную функцию PHP, подобную этой:
function removeItems(amp;$arr) {
if (!is_array($arr)) return;
if (isset($arr["items"]) amp;amp; is_string($arr["items"])) unset($arr["items"]);
foreach ($arr as amp;$value ) removeItems($value);
}
Назовите это так:
removeItems($arr);
Посмотрите, как он запускается на eval.in .
Вывод:
Array
(
[0] => Array
(
[id] => 109
[text] => dashboard
[items] => Array
(
[0] => Array
(
[id] => 1
[text] => financial_dashboard
)
[1] => Array
(
[id] => 108
[text] => project_dashboard
)
)
)
)