php - foreach 内部 foreach 删除元素问题
问题描述
我有两个数组。我正在循环第一个数组并检查第二个数组中是否存在值并从第二个数组中删除该元素。
这是我的代码。
$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 是一个带有键值对的关联数组。我正在动态获取。所以上面没有具体说明。
这仅适用于第一次并跳过下一个元素检查。请任何人帮助我。谢谢
解决方案
您需要从$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)
)
推荐阅读
- reactive-mongo-java - 使用reactivemongotemplate更新Mongo中的多级嵌入式文档
- android - 如何在 Android 应用程序中使用 ML 模型
- ruby - Rspec:模拟的 ENV 变量在示例中可见,但在应用程序代码中不可见
- c++ - 目标 C++ 稳定 ABI?
- dial-up - 借助现代技术,是否有可能通过通话以超过 56kbit/s 的速度传输数据?
- java - 如何修复更新后出现的 ContextWrapper.java 中的错误
- python - Python:TypeError:值必须是一个序列
- python - 如何仅从 SFTP 下载过去 14 天内名称中带有时间戳的文件?
- c# - 如何从 DbContextFactory 类注入自定义服务
- jquery - Laravel jquery ajax 后控制器总是重定向(302)