簡體   English   中英

PHP-計算數組中的元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM