PHP在数组中搜索数组并添加值

PHP在数组中搜索数组并添加值,php,arrays,Php,Arrays,我有以下数组: Array $a ( [1] => Array ( [id] => 1 [name] => Shoes ) [2] => Array ( [id] => 2 [name] => Shirts ) [3] => Array ( [id] => 3 [name] => Jeans )

我有以下数组:

Array $a
(
[1] => Array
    (
        [id] => 1
        [name] => Shoes
    )

[2] => Array
    (
        [id] => 2
        [name] => Shirts
    )

[3] => Array
    (
        [id] => 3
        [name] => Jeans
    )
)
我有一个数组:

Array $b
(
[0] => [1]
[1] => [5]
[2] => [6]
)
现在我想知道$b的一个值是否与$a中的[id]匹配。如果是这样,我想在$a内添加一个新值['hasID']=>true

解决方案应如下所示:

Array $a
(
[1] => Array
    (
        [id] => 1
        [name] => Shoes
        [hasID] => true
    )

[2] => Array
    (
        [id] => 2
        [name] => Shirts
        [hasID] => false
    )

[3] => Array
    (
        [id] => 3
        [name] => Jeans
        [hasID] => false
    )
)
我的尝试是:

    foreach($a as $ak => $av) {
        foreach($b as $bk => $bv) {     
            if($bv == $ak['id']) {
                $a[$ak]['hasID'] == true;   
            } else {
                $a[$ak]['hasID'] == false;
            }
        }
    }
这样不行。我试了好几个小时。有什么想法吗

多谢各位


在第一个数组中循环,并检查第二个id数组下是否存在
$arr['id']
的值。如果找到,则添加一个标志为true或1,否则为false或0

foreach($arr1 as $k=>&$arr) //<--- As you can see I have  added & (Reason below)
{
   in_array($arr['id'],$arr2) ? $arr['hasID']= true : $arr['hasID']=false;
}

print_r($arr1);

您的尝试无效,因为您使用double==而不是simple=作为值属性。这应该是有效的:

foreach($a as $ak => $av) {
    foreach($b as $bk => $bv) {     
        if($bv == $ak['id']) {
            $a[$ak]['hasID'] = true;   
        } else {
            $a[$ak]['hasID'] = false;
        }
    }
}
但是,出于性能考虑,使用in_阵列的解决方案是更好的选择。


<?php 
$arr1 = array('1'=>'shoes','2'=>'shirts','3'=>'jeans');
$arr2 = array('0'=>'1','1'=>'5','2'=>'6');

$i = 0;
foreach($arr1 as $k=>$val)
{
    if($arr2[$i] == 1)
    {
        $ARR[$k][] = $k;
        $ARR[$k][] = $val;
        $ARR[$k][] = 'true';
    }
    else
    {
        $ARR[$k][] = $k;
        $ARR[$k][] = $val;
        $ARR[$k][] = 'false';
    }
    $i++;
}
echo "<pre>";
    print_r($ARR);
echo "</pre>";
?>

您在那里实现了一些新手可能不理解的东西;参考资料&为什么
==
无法解决
=
@mackiee,我希望我解释了参考资料。谢谢你的提醒,哇!这很管用,又短又性感。我从参考操作符中学到了一些新东西。非常感谢!:)@PascalCloverfield将代码进一步缩减,并添加了一个
array\u walk
版本。快乐编码:)
<?php 
$arr1 = array('1'=>'shoes','2'=>'shirts','3'=>'jeans');
$arr2 = array('0'=>'1','1'=>'5','2'=>'6');

$i = 0;
foreach($arr1 as $k=>$val)
{
    if($arr2[$i] == 1)
    {
        $ARR[$k][] = $k;
        $ARR[$k][] = $val;
        $ARR[$k][] = 'true';
    }
    else
    {
        $ARR[$k][] = $k;
        $ARR[$k][] = $val;
        $ARR[$k][] = 'false';
    }
    $i++;
}
echo "<pre>";
    print_r($ARR);
echo "</pre>";
?>