假設我們有兩個數組:php數組與鍵和數組的鍵的區別?
$a=array('1'=>'Apple','2'=>'Microsoft',
'3'=>'Microapple','4'=>'Applesoft','5'=>'Softapple');
$b=array(1,3);
凡$ B陣列表示陣列的按鍵美元對相鑑別。
,我們希望收到另一個數組$ 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)
每個測試還採取萬次,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
來做到這一點! :-)
這是一個不錯的 – Anonymous 2012-08-13 15:01:09