2010-03-19 4 views
0

왜 배열이 PHP에서 배열이되지 않을지 궁금해하고 있습니다.배열이 배열이 아닌 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을 시도하고 최대한 빨리 루프에 대한 더 이상 배열하지만 정수가 입력 으로 배열을 스칼라 값을 사용할 수 없습니다. 변수의 이름을 바꾸려고했지만 같은 문제가 발생했습니다.

내가 놓친 간단한 것이 분명하지만 알아낼 수는 없습니다. 어떤 도움도 (항상 그렇듯이) 환영합니다!

+0

이 문제가 줄 수있는 정보로 대답 할 수 있는지 확실하지 않습니다. 더 많은 컨텍스트를 추가 할 수 있습니까? –

+0

그것은 이상한 버그인데 왜 내가 이런 일이 일어 났는지 공감을 찾기 시작할 수는 없지만 재부팅 후에는 사라집니다. 아마 그걸 더 빨리 시도해야합니다 .. – user146498

답변

0

알고있는 한, $compiled_tags[]은 항상 작동합니다. 코드의 다른 부분에 문제가있을 수 있습니다. 어쩌면 _compile_tag()$compiled_tagsglobal으로 사용합니까?

+0

그게 나도 그래. 하지만 내 전체 프로젝트와 아무 결과로 검색합니다. 컴퓨터를 재부팅해야한다고 생각하기 시작했습니다. – user146498

+0

한 번에 하나의 코드를 주석으로 처리하는 것이 좋습니다. $ this-> compile_tag()를 제거하고 "test"로 바꾸십시오. –

+0

제 컴퓨터를 재부팅 한 후에 대답을 찾지 만 문제가 더 이상 발생하지 않았습니다. – user146498

0

$ compiled_tags의 범위는 무엇입니까?

_compile_tag (...) 메서드가 정수로 설정할 수있는 것처럼 보입니다.

1

변수 $compiled_tags이 메소드 호출에 의해 덮어 쓰여지고 있습니다.

각 줄 사이에 print_r($compiled_tags);을 추가 한 다음 빈 배열에서 스칼라로 바뀌는 위치를 확인하십시오. 메서드 호출 후에 발생합니다. $this->_compile_tag()