php 数组与键数组和键数组的区别?

2024-04-21

假设我们有两个数组:

$a=array('1'=>'Apple','2'=>'Microsoft',
         '3'=>'Microapple','4'=>'Applesoft','5'=>'Softapple');
$b=array(1,3);

其中 $b 数组表示要区分的数组 $a 的键。

我们期望收到另一个数组 $c ,其值如下:

$c=array('2'=>'Microsoft','4'=>'Applesoft','5'=>'Softapple');

php手册中有两个函数:

array_diff($array1,$array2);    //difference of values
array_diff_key($array1,$array2);//difference of keys

但以上两者都不适用于此。

我们应该做什么?

Edit

感谢大家的贡献。

我对两个预定义的数组执行了一些基准测试,如下所示:

for ($i=0; $i < 10000; $i++) {    //add 10000 values
    $a[]=mt_rand(0, 1000000); //just some random number as a value
}
for ($i=0; $i < 10000; $i++) {    //add 10000 values as keys of a
    $b[]=mt_rand(0, 1000);    
}        //randomly from 0 to 1000 (eg does not cover all the range of keys)

每个测试也进行了10000次,平均时间为Nanne的解决方案是:

0.013398

和其中之一decereé:

0.014865

这也很棒。

...与 in_array() 的其他建议不同,但是(该答案已删除):

foreach ($a as $key => $value)
if (!in_array($key, $b)) 
$c[$key] = $value;

以上平均做了2秒。显而易见,in_array() 必须循环遍历 $b 来检查该值是否存在。上面是一个很好的例子not去做吧! :-)


$c = array_diff_key($a, array_flip($b));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php 数组与键数组和键数组的区别? 的相关文章

随机推荐