【问题标题】:Foreach inside foreach delete element issueforeach 内部 foreach 删除元素问题
【发布时间】:2019-01-23 03:55:28
【问题描述】:

我有两个数组。 我正在循环第一个数组并检查第二个数组中是否存在值并从第二个数组中删除该元素。

这是我的代码。

$options = 数组();

  "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 是具有键值对的关联数组。我正在动态获取。所以上面没有指定。

这仅适用于第一次并跳过下一个元素检查。请任何人帮助我。谢谢

【问题讨论】:

  • @Andreas,我正在使用 php 进行此操作
  • 您发布的这段代码似乎不完整,或者至少难以理解。 “OptionValues”变量是否应该在数组中,或者?它现在不是有效的 php,所以很难首次亮相。
  • @Ryan,Optionvalues 是一个数组,我是从 json 读取的,只是我按原样发布了
  • 请发布$options数组。从您的描述来看,您使用value 作为密钥尚不清楚。
  • @pupil,是的,它有名称 n 值,我认为它不是必需的,因为我正在检查 Optionvalues 数组,作为参考我发布为空数组

标签: php arrays if-statement foreach


【解决方案1】:

您需要从$options 数组而不是$option 子数组中删除。

另外,请在循环遍历$options数组时获取key并通过key删除。

工作示例:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-27
    • 2018-03-18
    • 2014-12-10
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多