【问题标题】:PHP Unsetting values in another array with identical keyPHP在另一个具有相同键的数组中取消设置值
【发布时间】:2014-08-16 10:56:45
【问题描述】:

我有两个数组。

我有一个 foreach 循环,它遍历这些数组之一 ($items)。对于此数组中的每个值,如果条件不成立,我想取消设置相同的键,但来自另一个类似的数组($list)。 (这两个数组不相同,但key总是相同的)。

我不确定该怎么做。我在下面使用的代码没有成功从第一个数组中取消记录。

两个数组都有键(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]);
    }
}

【问题讨论】:

  • 您从哪里获得$item['id']$setting?那个双重= =是你帖子中的错字吗?其他一切看起来都很好。
  • 我会再检查一遍,谢谢。 $item['id'] 指的是 $items 数组的(现在更新的)键条目。 $setting 只是我项目中的一个变量。
  • 这是一个不可能存在的数组,数组中的所有键都必须是唯一的

标签: php arrays foreach unset


【解决方案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。

【讨论】:

    【解决方案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]);
        }
    }
    

    【讨论】:

    • @bloodyKnuckles:打我一拳。哈哈!
    • 完美运行,谢谢。您对我的数组中的键是正确的,但这仅用于示例(!):-)
    猜你喜欢
    • 1970-01-01
    • 2015-11-22
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多