为什么';PHP是否正确增加数组索引?
假设我有一个数组:为什么';PHP是否正确增加数组索引?,php,arrays,Php,Arrays,假设我有一个数组: array(12) { [0] => array(0) { } // [...] [9] => string(5) "test" [10] => array(0) { } [11] => class stdClass#5 (0) { } } 此数组中的所有项都是这样添加的$a[]=$somevalue 现在我添加另一项:$a[]=newfoobar('bar') 然而,这导致: array(13) {
array(12) {
[0] =>
array(0) {
}
// [...]
[9] =>
string(5) "test"
[10] =>
array(0) {
}
[11] =>
class stdClass#5 (0) {
}
}
此数组中的所有项都是这样添加的$a[]=$somevalue
现在我添加另一项:$a[]=newfoobar('bar')代码>
然而,这导致:
array(13) {
[0] =>
array(0) {
}
// [...]
[9] =>
string(5) "test"
[10] =>
array(0) {
}
[11] =>
class stdClass#5 (0) {
}
[21] =>
class Foobar#8 (3) {
protected $id =>
string(11) "bar"
}
}
我的Foobar
对象不是$a[12]
,为什么?我能做些什么使PHP正确地迭代吗
更新:
我无法在单个文件中重现这种行为。不幸的是,我的代码中包含了一个完整的框架。由于我只能控制最后一条语句($a[]=new Foobar('id');
),我可以在该表达式之前做些什么来强制PHP正确地迭代吗?我不确定您的意思是否是这样,但这里是这样的:PHP数组不必以标准方式进行索引;如果取消设置12-20
,则最后一项(即21
将不会更改其索引)。您还可以使用字符串作为键;它更像是一个键值对,而不是其他语言中的标准表。您可以使用foreach
对数组进行迭代
$a = array(
0 => 2,
21 => 30,
"foo" => "bar"
);
foreach ($a as $val)
{
echo $val;
echo "\n";
}
将打印:
2
30
bar
. 你确定你不是12-20岁吗?请出示你的完整密码@kingkero项目可能已设置和取消设置,有没有办法重置计数器?