[英]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
在某个变量上返回1
( one ),然后,当将相同的变量放入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>';
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.