developer tip

PHP-이 잘못된 오프셋 유형 오류를 어떻게 수정합니까?

optionbox 2020. 10. 14. 07:44
반응형

PHP-이 잘못된 오프셋 유형 오류를 어떻게 수정합니까?


나는 얻고있다

잘못된 오프셋 유형

이 코드를 반복 할 때마다 오류가 발생합니다. 코드는 다음과 같습니다.

$s = array();
for($i = 0; $i < 20; $i++){
    $source = $xml->entry[$i]->source;
    $s[$source] += 1;    
}

print_r($s)

개체 또는 배열 을 인덱스 키로 사용하여 배열 인덱스에 액세스하려고하면 잘못된 오프셋 유형 오류가 발생 합니다.

예:

$x = new stdClass();
$arr = array();
echo $arr[$x];
//illegal offset type

귀하의 $xml배열에서 객체 나 배열을 포함 $xml->entry[$i]->source일부 값에 대해 $i, 당신은에 대한 인덱스 키로 그것을 사용하려고하면 $s, 당신은 경고를 얻을. $xml원하는 내용이 포함되어 있고 올바르게 액세스하고 있는지 확인해야 합니다.


trim($source)전에 사용하십시오 $s[$source].


$ xml-> entry [$ i]가 존재하고 속성을 가져 오기 전에 객체인지 확인하십시오.

 if(isset($xml->entry[$i]) && is_object($xml->entry[$i])){
   $source = $xml->entry[$i]->source;          
   $s[$source] += 1;
 }

또는 $ source는 유효한 배열 오프셋이 아니라 배열, 개체, 리소스 또는 null 일 수 있습니다.


XML에 20 개 미만의 항목이있을 수 있습니다.

이 코드를 변경

for ($i=0;$i< sizeof($xml->entry); $i++)
...

비슷한 문제가있었습니다. XML 자식에서 문자를 얻었을 때 먼저 문자열 (또는 예상하는 경우 정수)로 변환해야했습니다. 다음은 문제를 해결 한 방법을 보여줍니다.

foreach($xml->children() as $newInstr){
        $iInstrument = new Instrument($newInstr['id'],$newInstr->Naam,$newInstr->Key);
        $arrInstruments->offsetSet((String)$iInstrument->getID(), $iInstrument);
    }

참고 URL : https://stackoverflow.com/questions/2732451/php-how-do-i-fix-this-illegal-offset-type-error

반응형