[英]php - count elements in array
我正在嘗試對數組中的元素進行計數,但是它沒有按預期工作:
我有一個while循環,它循環遍歷我的用戶表:
while($refsData=$refs->fetch()){
$new_array = array($refsData['id']);
print_r($new_array);
$outcome = $rentedrefs->_paying($new_array);
}
print_r($new_array);
給我:
Array
(
[0] => 90427
)
Array
(
[0] => 90428
)
Array
(
[0] => 90429
)
Array
(
[0] => 90430
)
Array
(
[0] => 90431
)
Array
(
[0] => 90432
)
Array
(
[0] => 90433
)
Array
(
[0] => 90434
)
Array
(
[0] => 90435
)
Array
(
[0] => 90436
)
在_paying
函數內部,我計算了數組中的值數量:
function _paying($referrals_array){
echo count($referrals_array);
}
問題是,上面的count($referrals_array);
只是給我: 1
,應該是10
我究竟做錯了什么?
您可以在循環的每個步驟中創建一個新數組。 相反,它應該這樣寫:
$new_array = array();
while($refsData=$refs->fetch()){
$new_array[] = $refsData['id'];
// print_r($new_array);
}
$outcome = $rentedrefs->_paying($new_array);
請注意,我將_paying
調用移到了循環之外,因為它似乎是聚合功能。 如果沒有,您很可能會讓它處理$refsData['id']
-而不是整個數組。
附帶說明一下,我強烈建議您使用fetchAll()方法(當您需要用查詢結果填充集合時,請不要使用fetch。對結果數組的數量進行計數將是微不足道的。
它工作正常,在循環的每個循環中您只有一個數組,因此首先需要:
Array
(
[0] => 90427
)
在第二:
Array
(
[0] => 90428
)
等等。
它應該可以正常工作:
var $count = 0;
while($refsData=$refs->fetch()){
$new_array = array($refsData['id']);
$count += count($new_array);
$outcome = $rentedrefs->_paying($new_array);
}
您正在使用單個元素$refsData['id']
將$new_array
創建為新數組。 因此,計數1是正確的。
要獲得結果數量,請使用COUNT(*)
select詢問您的sql服務器,或者向循環添加一個計數器,如下所示:
$entries = 0;
while($refsData=$refs->fetch()){
$new_array = array($refsData['id']);
print_r($new_array);
$entries++;
$outcome = $rentedrefs->_paying($new_array);
}
echo $entries;
您不是在數組中添加元素,而是在每次迭代中創建一個新數組。 要添加元素,只需執行以下操作:
$new_array[] = $refsData['id'];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.