我有两个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
)
它不应该显示地址,因为第一个数组不存在...
抱歉!我不知道如何解释这件事......
这里只是示例代码,但实际上我有非常大的数组,还有一些额外的信息(请记住这一点)...
提前致谢
答案 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);