日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

php arrayudiff,php array_udiff工作原理

發布時間:2024/1/23 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php arrayudiff,php array_udiff工作原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

php的array_udiff的工作原理實在搞不懂,尤其是回調函數,

$arr1 = array('m1'=>1, 'm2'=>5, 'm3'=>3);

$arr2 = array('n2'=>4, 'n2'=>5, 'n3'=>6);

var_dump(array_udiff($arr1, $arr2, function($a, $b){

print_r($a.'~~~~'.$b.'

');

if($a>$b)

return 1;

else

return 0;

})

);

每次的回調函數的參數是什么, 我把它打印出來,可并不像期望的那樣,$arr1的每個元素值直接與$arr2的每個元素值相比較,而是

5~~~~1

3~~~~5

1~~~~3

6~~~~5

1~~~~5

1~~~~3

3~~~~5

回調函數返回的結果又是做什么用的,求解

最后吐槽一下,網上查的結果全他么都是從www3school和php.net復制下來的,實在不能忍,操

回復內容:

php的array_udiff的工作原理實在搞不懂,尤其是回調函數,

$arr1 = array('m1'=>1, 'm2'=>5, 'm3'=>3);

$arr2 = array('n2'=>4, 'n2'=>5, 'n3'=>6);

var_dump(array_udiff($arr1, $arr2, function($a, $b){

print_r($a.'~~~~'.$b.'

');

if($a>$b)

return 1;

else

return 0;

})

);

每次的回調函數的參數是什么, 我把它打印出來,可并不像期望的那樣,$arr1的每個元素值直接與$arr2的每個元素值相比較,而是

5~~~~1

3~~~~5

1~~~~3

6~~~~5

1~~~~5

1~~~~3

3~~~~5

回調函數返回的結果又是做什么用的,求解

最后吐槽一下,網上查的結果全他么都是從www3school和php.net復制下來的,實在不能忍,操

先不要管它內部是怎么實現比較算法的,我們在callback里 需要實現的是 回調函數的第一個參數小于,等于或大于第二個參數時,該比較函數必須相應地返回一個小于,等于或大于 0 的整數。

樓主的例子更改為如下時,便可實現正常的比較功能:

$arr1 = array('m1'=>1, 'm2'=>5, 'm3'=>3);

$arr2 = array('n2'=>4, 'n2'=>5, 'n3'=>6);

var_dump(array_udiff($arr1, $arr2, function($a, $b){

print_r($a.'~~~~'.$b.'

');

if($a>$b){

return 1;

} else if($a == $b) {

return 0;

} else if($a < $b) {

return -1;

}

}));

回調函數只要實現如何判斷傳進來的兩個值是相等還是大于小于的關系即可。這兩個值都是數組的元素。但是不要誤會 第一個參數是第一個數組的值,第二個參數是第二個數組的值。

call_back在這個函數中有2個作用,

* 排序 將array_udiff中的每個參數排序,并返回hash之后的數組

* 過濾 將第一個數組與其他數組比較,過濾出要返回的值

P.S. 我確定這個過程是正確的。參考PHP: array_udiff()

在你的例子中

$arr1 = array('m1'=>1, 'm2'=>5, 'm3'=>3);

$arr2 = array('n2'=>4, 'n2'=>5, 'n3'=>6); //n2=>4應該是n1吧?

輸出中的前4項

5~~~~1

3~~~~5

1~~~~3

6~~~~5

就是在做排序

拍完序之后,會把第一數組中的每一個項去其他數組中檢查,若不存在則將該項放入返回數組中。

但是從輸出的內容上看有點詭異,我也不明白!囧。

array_diff本身是計算數組的差集。貌似不支持回調函數吧?

http://cn2.php.net/manual/zh/function.array-diff.php

相關標簽:php

本文原創發布php中文網,轉載請注明出處,感謝您的尊重!

總結

以上是生活随笔為你收集整理的php arrayudiff,php array_udiff工作原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。