我一直在疯狂地试图找出为什么数组不会是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循环,它就不再是一个数组了,而是一个整数。我尝试重命名变量,但同样的问题。
我确信我错过了一些简单但我无法理解的事情。任何帮助(一如既往)欢迎!
答案 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(...)方法可能将其设置为整数。