我嘗試使用 array_filter 將陣列中的計數為零,我的代碼是:
$arr=[1,2,0,3,4,5,0];
$countzero=count(
array_filter($arr,function($x){
if($x==0){
return $x;
}})
);
echo $countzero;
結果是
0
預期的結果是
2
如果條件if($x>0),結果是5,但為什么if($x==0)結果是0?,謝謝幫助
uj5u.com熱心網友回復:
你可以用不同的方式做到這一點:
echo array_count_values($arr)[0];
https://www.php.net/manual/en/function.array-count-values.php
演示:https ://3v4l.org/Rq3qN
當前實作的問題0是 FALSE 所以:
如果回呼函式回傳 true,則將陣列中的當前值回傳到結果陣列中。
能做:
$arr=[1,2,0,3,4,5,0];
$countzero=count(
array_filter($arr,function($x){
if($x==0){
return 1;
}})
);
echo $countzero;
這給每個 TRUE $x==0。
uj5u.com熱心網友回復:
使用 php 7.4,你可以寫得更簡潔:
$countzero = count(array_filter($arr, fn($x) => $x));
實際上,array_filter()需要一個回傳布林值的回呼。并且由于0轉換為false并且任何其他整數都轉換為true,它將給出預期的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/503643.html
標籤:php
