php奇怪的错误,其中数组不是数组

时间:2010-03-19 13:42:26

标签: php arrays

我一直在疯狂地试图找出为什么数组不会是php中的数组。

出于某种原因,我无法理解我在聪明的课堂上有一个错误。代码是这样的:

$compiled_tags = array();
for ($i = 0, $for_max = count($template_tags); $i < $for_max; $i++) {
   $this->_current_line_no += substr_count($text_blocks[$i], "\n");

   // I tried array push instead to see
   // bug is here
   array_push($compiled_tags,$this->_compile_tag($template_tags[$i]));
   //$compiled_tags[] = $this->_compile_tag($template_tags[$i]);

   $this->_current_line_no += substr_count($template_tags[$i], "\n");

}

错误消息是

  

警告:array_push()期望   参数1为数组,给定整数   在....

之前使用[]

  

警告:不能使用标量值   ....中的数组。

我在$ compiled_tags上尝试了一个var_debug,一旦我输入for循环,它就不再是一个数组了,而是一个整数。我尝试重命名变量,但同样的问题。

我确信我错过了一些简单但我无法理解的事情。任何帮助(一如既往)欢迎!

3 个答案:

答案 0 :(得分:1)

变量$compiled_tags被某些东西覆盖,可能是方法调用。

尝试在每行之间添加print_r($compiled_tags);,然后查看它从空数组更改为标量的位置。我打赌它会在方法调用$this->_compile_tag()

之后发生

答案 1 :(得分:0)

据我所知,$compiled_tags[]将始终有效。您的代码中的其他位置可能存在问题。也许_compile_tag()使用$compiled_tags作为global

答案 2 :(得分:0)

$ compiled_tags的范围是什么?

看起来_compile_tag(...)方法可能将其设置为整数。