怎么做平等检查呢?

时间:2014-02-10 09:36:02

标签: php arrays

我有两个diff数组,我想根据相同的条件打印这些数组...

第一个数组

     Array ( 
            [0] => fname 
            [1] => lname 
            [2] => email  
      )

第二个数组

   Array ( 
           [fname] => john 
           [lname] => notdefined 
           [email] => xyz@gmail.com 
           [address] => london 
    )

现在我的问题是我想打印来自第二个数组的值,当且仅当此数组的索引与第一个数组值匹配时...

第二个数组的索引==第一个数组的值(我可以说这是平等条件以便更好地理解)

在这种情况下我的输出应该是

   Array (
           [fname] => john
           [lname] => notdefined
           [email] => xyz@gmail.com
      )

它不应该显示地址,因为第一个数组不存在...

抱歉!我不知道如何解释这件事......

这里只是示例代码,但实际上我有非常大的数组,还有一些额外的信息(请记住这一点)...

提前致谢

2 个答案:

答案 0 :(得分:1)

有很多方法,其中之一是:

foreach($secArr as $key => $val)
{
     if(in_array($key, $firstArr))
         echo $val;
}

或:

$keys = array_flip($firstArr);
$arr = array_intersect_key($secArr, $keys);
//display $arr;

或:

foreach($firstArr as $key)
{
     if($secArr[$key])
         echo $secArr[$key];
}

运用你的想象力,SO不是给你准备好代码的地方,告诉我们你尝试过的东西,我们将帮助你使它成功。

答案 1 :(得分:0)

使用array_flip函数交换第一个数组键和值,并使用键计算数组的交集,以便使用array_intersect_key进行比较。

$array1 = array(0 => fname,1 => lname ,2 => email);
$array1 = array_flip($array1);
$array2 = array( 
       fname => 'john', 
       lname => 'notdefined', 
       email => 'xyz@gmail.com', 
       address => 'london' 
    );

$new = array_intersect_key($array2,$array1);
print_r($new);

working demo