繁体   English   中英

count()值和foreach()循环之间的差异计数

[英]Difference between count() value and foreach() cycles count

好吧,这超出了我的想象。 我必须遗漏一些明显的东西,但我找不到,是什么。

a)PHP脚本:

echo('<pre>count($connectionsData) = '.print_r(count($connectionsData), TRUE).'</pre>');

$cnt = 0;

foreach($connectionsData as $connection)
{
    echo('<pre>'.(++$cnt).'. '.print_r($connection, TRUE).'</pre>');
}

b)结果:

count($connectionsData) = 1

1. 1
2. 1
3. 8
4. 1

怎么可能, count在某个变量上返回1one ),然后,当将相同的变量放入foreach ,该循环实际上会循环4次?

看来$connectionsData是一个没有实现可数接口的对象:

class Obj{
    public $var = 1;
    public $var2 = 2;

}

$obj = new Obj();

echo 'count: ' . count($obj) . '<br>';

$count=0;
foreach($obj as $el){
    echo ++$count . ' element: ' . $el . '<br>';
}

class CountableObj implements Countable{
    public $var = 1;
    public $var2 = 2;
    public function count(){ 
        return 2; 
    } 

}

$obj = new CountableObj();

echo 'count countable: ' . count($obj) . '<br>';

$count=0;
foreach($obj as $el){
    echo ++$count . ' element: ' . $el . '<br>';
}

实例: http//codepad.viper-7.com/q7sNol

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM