Элемент JSON unset с определенным индексом в php

#php #json #rest #unset

Вопрос:

У меня есть два URL-адреса REST, которые я использую. В первом из них есть профили событий, и в своем коде я просматриваю и ищу каждый из них во втором URL-адресе rest.

Комментарии:

1. Все становится намного проще, если вы используете foreach вместо for цикла элементы массива.

2. unset($eventRuleID); ничего не отменяет в массиве. Какой в этом смысл?

3. unset($policyPayloadCopy["EventProfile"][$counter]["EventRuleIDList"]["EventRuleID"][$index]); это то, как вы отменяете установку элемента массива.

4. Лучший способ сделать это array_filter() -сохранить элементы массива , в которых находится серьезность $checkedArr .

5. Если вы сделаете $a = 1; $b = $a; unset($b); это , это только выбьет вас из колеи $b , а не $a .

Ответ №1:

Используется array_filter() для сохранения элементов, соответствующих критериям фильтрации, вместо того, чтобы сбрасывать элементы во время цикла.

 foreach ($policyPayloadCopy["EventProfile"] as amp;$profile) {
    if (count($profile["EventRuleIDList"]["EventRuleID"]) > 1) {
        $profile["EventRuleIDList"]["EventRuleID"] = array_filter($profile["EventRuleIDList"]["EventRuleID"], function($rule) use ($checkedArr) {
            return in_array($rule["Severity"], $checkedArr);
        });
    }
}
 

Ссылочная переменная amp;$profile означает, что назначение $profile["EventRuleIDList"]["EventRuleID"] влияет на исходный $policyPayloadCopy массив, а не на копию.