2014-11-02 130 views
0

我想数出数组中的元素,但按预期工作好好尝试:PHP - 计数数组元素

我有一个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

我在做什么错?

+0

在'while'循环的每次迭代中,您都覆盖'$ new_array'。 – 2014-11-02 12:24:07

+0

你的数组只返回一个元素。看看你的输出。每个数组都是Array [0]。 – 2014-11-02 12:24:35

回答

2

在循环的每一步创建一个新数组。相反,它应该这样写:

$new_array = array(); 
while($refsData=$refs->fetch()){ 
    $new_array[] = $refsData['id']; 
    // print_r($new_array); 
} 

$outcome = $rentedrefs->_paying($new_array); 

注意,我搬到了外循环_paying调用,因为它似乎是聚合函数。如果不是的话,你最有可能使其处理$refsData['id']而不是整个阵列。

一点题外话,我强烈建议使用fetchAll()方法(而不是当你需要填写一个集合了查询的结果取回。这将是微不足道的计算所得阵列的数量。

+0

我在问题中显示的while循环实际上是一个嵌套循环。意思是在该循环之外有另一个while循环。如果我将$结果置于该嵌套循环之外,但是在第一个循环中,那会是一个问题吗? – oliverbj 2014-11-02 12:28:21

+0

您没有显示外部循环,但是我看到它的方式,我展示的代码是您目前所拥有的代码的直接替代。 – raina77ow 2014-11-02 12:29:20

0

它可以正常工作,在循环的每个循环你有一个数组,所以首先你必须:

Array 
(
    [0] => 90427 
) 

在第2:

Array 
(
    [0] => 90428 
) 

它应能正常工作:

var $count = 0; 
while($refsData=$refs->fetch()){ 
    $new_array = array($refsData['id']); 
     $count += count($new_array);  
     $outcome = $rentedrefs->_paying($new_array); 
    } 
0

你正在创建$new_array与单件$refsData['id']一个新的数组。因此1的计数是正确的。

要获得搜索结果的数量,或者使用一个COUNT(*)选择要问你的SQL Server,或计数器添加到您的循环,像这样:

$entries = 0; 
while($refsData=$refs->fetch()){ 
    $new_array = array($refsData['id']); 
    print_r($new_array); 
    $entries++; 

    $outcome = $rentedrefs->_paying($new_array); 
} 

echo $entries; 
+0

当我回复$条目时,这给了我“100” – oliverbj 2014-11-02 12:26:31

+0

然后你有100个结果,我想。 – andy 2014-11-02 12:31:31

+0

表中只有10行。 – oliverbj 2014-11-02 12:31:59

0

您不添加元素添加到数组,但每次迭代创建一个新数组。要添加元素,只需:

$new_array[] = $refsData['id'];