我有两个阵列。
我有一个foreach循环,它遍历其中一个数组($ items)。对于此数组中的每个值,如果条件不为真,我想取消设置相同的键,但是从另一个类似的数组($ list)。 (两个数组不相同,但键总是相同的。)
我不确定如何解决这个问题。我在下面使用的代码没有成功地从第一个数组中取消设置记录。
两个阵列都有密钥(ID)和辅助数据。
$list = array(
'id' => '2',
'id' => '3',
'id' => '4',
'id' => '5',
'id' => '6'
);
$items = array(
'id' => '2',
'id' => '3',
'id' => '4',
'id' => '5',
'id' => '6'
);
foreach ($items AS $key => $item)
{
if ($item['id'] != $setting)
{
unset($list[$key]);
}
}
答案 0 :(得分:2)
阵列中的键究竟是什么?因为,您不能让数组中的每个键都相同。他们互相覆盖。 (不确定这是否仅适用于您的示例)。
无论如何,使用此代码可以使用测试验证...
<?php
$list = array(
2,3,4,5,6
);
$items = array(
2,3,4,5,6
);
$set = 3;
foreach($list as $key => $val){
echo $key . " " . $val . "\n";
}
echo "\n -------------------- \n";
foreach($list as $key => $val){
if ($list[$key] != $set){
unset($items[$key]);
}
}
foreach($items as $key => $val){
echo $key . " " . $val . "\n";
}
?>
因此,执行您尝试执行的操作的实际工作代码是:
$list = array(
2,3,4,5,6
);
$items= array(
2,3,4,5,6
);
$set = 3; //random variable to mock your $setting variable
foreach($list as $key => $val){
if ($list[$key] != $set){
unset($items[$key]);
}
}
答案 1 :(得分:1)
循环遍历$ items,对于每个不等于$ setting的值,从列表中删除。
$setting = 3;
$list = array('2','3','4','5','6');
$items = array('2','3','4','5','6');
foreach ($items AS $key => $item)
{
if ($item != $setting)
{
unset($list[$key]);
}
}
print_r($list);
输出:
Array ( [1] => 3 )
所以$ list现在只包含值3。