gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:38:01 25 4
gpt4 key购买 nike

假设我们有两个数组:

$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

但以上均不适用于此。

我们该怎么办?

编辑

感谢大家的贡献。

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

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 以检查该值是否存在。以上是如何做到这一点的一个很好的例子! :-)

最佳答案

$c = array_diff_key($a, array_flip($b));

关于php数组与数组键和键数组的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11936898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com