检查PHP中另一个数组中是否存在数组的元素

时间:2014-10-17 07:51:51

标签: php arrays

我想检查一个数组中的元素是否已存在于另一个数组中。如果它存在,那么我想将第一个数组中的所有元素添加到一个新的关联数组,并添加一个额外的键值([check] => 0/1)以指示该元素是否存在于另一个数组中。

这是我尝试过的示例代码。

$first = array("0"=> 111, "1"=>222, "2"=>333, "3"=> 444);
$second = array("0"=> 22, "1"=>234, "2"=> 456);

$final_array = array();

foreach($first as $f)
{
    if(in_array($f, $second))
    {
        $final_array['id'] = $f;
        $final_array['check'] = 1;
    }

    else 
    {
        $final_array['id'] = $f;
        $final_array['check'] = 0;
    }
}

由于某些原因,我只能将最后一个元素添加到$ final_array。有人能告诉我我做错了吗?

//Output for $final_array
Array ( [id] => 444 [check] => 0 )

//final output should look like this
$final_array = array("0"=> array("id" => 111, "check" => 0), 
                    "1" => array("id" => 222, "check" => 1), 
                    "2" => array("id" => 333, "check" => 0), 
                    "3" => array("id" => 444, "check" => 0));

1 个答案:

答案 0 :(得分:1)

由于您希望推送多个项目,因此您需要在其中添加另一个维度:

$first = array("0"=> 111, "1"=>222, "2"=>333, "3"=> 444);
$second = array("0"=> 222, "1"=>234, "2"=> 456);

$final_array = array();
foreach($first as $f) {
    $temp = array('id' => $f);
    if(in_array($f, $second)){
        $temp['check'] = 1;
    } else {
       $temp['check'] = 0;
    }
    $final_array[] = $temp;
}

或者只是这样使用三元:

$final_array = array();
foreach($first as $f) {
    $final_array[] = array('id' => $f, 'check' => in_array($f, $second) ? 1 : 0);
}

每次迭代都会导致您的值被覆盖:

$final_array['id'] = $f; // overwritten
$final_array['check'] = 1; // overwrriten

您需要使用其他维度推送它:$final_array[] = the array