2010-12-17 4 views
4

배열이 예상대로 작동하지 않는 이유를 파악하는 데 많은 어려움을 겪고 있습니다. 아래 코드와 기능적으로 동일한 코드를 사용하고 있었지만 내 프로그램에서 자동으로 실패했습니다. 따라서 동일한 유형의 데이터와 구문을 사용하여 격리 된 테스트 케이스를 작성하고 잘못된 오프셋 유형에 대한 오류가 발생했습니다.PHP "경고 : 잘못된 오프셋 유형을 ..."배열 문제로 인해 문제가 발생했습니다

Warning: Illegal offset type in <file location>\example.php on line 12 
Warning: Illegal offset type in <file location>\example.php on line 16 

"$ questions [$ question]"에 대한 참조가 포함 된 두 줄을 참조하십시오.

<?php 
    $questions = array(
     "訓読み: 玉"=>array("たま","だま"), 
     "訓読み: 立"=>array("たて","たち","たつ","たてる","だてる","だて"), 
    ); 

    $question = $questions["訓読み: 立"]; 

    if (is_array($questions[$question])){ 
     $res = $questions[$question][0]; 
    } else { 
     $res = $questions[$question]; 
    } 
    echo $res; 
?> 

내가 열쇠로 사용할 수 없습니다 "배열과 객체 상태 http://php.net/manual/en/language.types.array.php에 경고를 볼 수있는 반면 때문에 나는 여기에 내 기술 수준을 넘어 생각 해요 경고가 발생합니다 이렇게. : 잘못된 오프셋 유형입니다. ", 내가하고있는 일이 바로 그 페이지의 Example # 7과 다른 점을 나는 볼 수 없다.

여기서 내 문제를 이해하고 해결하는 데 도움이되는 설명에 크게 감사드립니다.

미리 감사드립니다.

답변

0

나는 그들이 볼 수있는 한 매뉴얼 페이지에서 그렇게하지 않는다. 배열을 키로 사용할 수 없습니다.

2

$question = $questions["訓読み: 立"];으로 전화를 걸면 해당 문자열이 나타내는 배열을 수신하게됩니다. 당신이 $ 질문 [$ 질문]를 사용하는 경우, 당신은 단지 사용 $ 질문해야한다 :

<?php 
    $questions = array(
     "訓読み: 玉"=>array("たま","だま"), 
     "訓読み: 立"=>array("たて","たち","たつ","たてる","だてる","だて"), 
    ); 

    $question = $questions["訓読み: 立"]; 

    if (is_array($question)){ 
     $res = $question[0]; 
    } else { 
     $res = $question; 
    } 
    echo $res; 
?> 
+0

감사합니다 일을해야한다,이 특정 코드의 문제를 해결하지, 나에게 이것이 어떻게 작동하는지에 좀 더 통찰력을 제공합니다. 불행히도, 원래 문제가있는 큰 코드는 여전히 작동하지 않습니다 ... :(나는 좀 더 발전 할 수 있는지 알아보기 위해 계속 파고 있습니다. –

1

은 당신이 그런 보일 것이다 array_key_exists
를 사용하여 callind의는 is_array 전에 추가 검사를 수행해야합니다 경고 제거하기 :

if (array_key_exists($question,$questions) && is_array($questions[$question])) 

관련 문제