#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
массив, а не на копию.