簡體   English   中英

foreach內的foreach刪除元素問題

[英]Foreach inside foreach delete element issue

我有兩個數組。 我正在循環第一個數組,並檢查第二個數組中是否存在值,然后從第二個數組中刪除該元素。

這是我的代碼。

$ 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是具有鍵值對的關聯數組。 我正在動態獲取。 所以上面沒有指定。

這僅是第一次工作,並跳過下一個元素檢查。 請任何人幫助我。 謝謝

您需要從$options數組中刪除而不是從$option子數組中刪除。

另外,請在循環$options數組時獲取密鑰並按密鑰刪除。

工作示例:

<?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 '</pre>';
foreach($OptionValues as $optValue){
 $optionIdVal = $optValue['OptionId'];
 foreach ($options as $key => $option) {
  if($option['value'] == $optionIdVal){
   unset($options[$key]);
  }
 }
}
echo '<br/>$options array After: ';
echo '<pre>';print_r($options);echo '</pre>';
?>

產量

$ options數組之前:

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)
)

$ options數組之后:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM