PHP使用相同的键在另一个数组中取消设置值

时间:2014-06-25 18:37:48

标签: php arrays foreach unset

我有两个阵列。

我有一个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]);
    }
}

2 个答案:

答案 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。