Foreach внутри foreach удалить элемент - PullRequest
0 голосов
/ 23 января 2019

У меня есть два массива. Я зацикливаю первый массив и проверяю, существует ли значение во втором массиве, и удаляю этот элемент из второго массива.

Вот мой код.

$ options = array ();

  "OptionValues": [ 
         { 
            "OptionId": "22",  
            "OptionName": "Gener" 
         },
         { 
            "OptionId": "21",
            "OptionName" : "Gener"
         } 

  foreach($OptionValues as $optValue){
                    $optionIdVal = $optValue['OptionId'];
                    foreach ($options as $option) {
                        if($option['value'] == $optionIdVal){
                            unset($option['value']);
                        }
                    }
                }

$ options - это ассоциативный массив с парами ключ-значение. который я получаю динамически. поэтому не указано выше.

Это работает только в первый раз и пропускает проверку следующего элемента. Пожалуйста, кто-нибудь, помогите мне. Спасибо

1 Ответ

0 голосов
/ 23 января 2019

Вам необходимо удалить из $options массива, а не $option подмассива.

Также, пожалуйста, получите ключ при цикле по массиву $options и удалите по ключу.

Рабочаяпример:

<code><?php
$OptionValues = [
 ["OptionId" => "22", "OptionName" => "Gener"],
 ["OptionId" => "21", "OptionName" => "Gener"]
];
$options = [];
$options[] = ['value' => 17];
$options[] = ['value' => 18];
$options[] = ['value' => 19];
$options[] = ['value' => 20];
$options[] = ['value' => 21];
$options[] = ['value' => 22];
echo '<br/>$options array before: ';
echo '<pre>';print_r($options);echo '
';foreach ($ OptionValues ​​как $ optValue) {$ optionIdVal = $ optValue ['OptionId'];foreach ($ options as $ key => $ option) {if ($ option ['value'] == $ optionIdVal) {unset ($ options [$ key]);}}} echo 'массив $ options после: ';echo '
';print_r($options);echo '
';?>

Вывод

$ массив параметров до:

Array(
 [0] => Array([value] => 17)
 [1] => Array([value] => 18)
 [2] => Array([value] => 19)
 [3] => Array([value] => 20)
 [4] => Array([value] => 21)
 [5] => Array([value] => 22)
)

$ массив параметров После:

Array(
 [0] => Array([value] => 17)
 [1] => Array([value] => 18)
 [2] => Array([value] => 19)
 [3] => Array([value] => 20)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...