>  Q&A  >  본문

PHP - 요소의 값이 문자열 유형이 아닌 경우 객체 탐색이 실패합니다.

<p>간단한 질문이 있는데 무슨 일이 일어나고 있는지 알 수 없습니다. 다음과 같은 JSON 문자열이 있습니다. </p> <pre class="brush:php;toolbar:false;">{ "network_title": "네트워크", "class_title": "클래스", "성적": [{ "번호": "유치원", "label": "유치원생", "주문": 1, "ID": "34567" }, { "번호": "TK", "label": "임시 유치원", "주문": 2, "ID": "23456" }, { "번호": "K", "label": "유치원", "주문": 3, "ID": "12345" }] }</pre> <p>(특정한 이유로) 다음과 같은 배열로 변환됩니다. </p> <pre class="brush:php;toolbar:false;">배열:3 [ "network_title" => "네트워크" "class_title" => "클래스" "성적" => 배열:3 [ 0 => 배열:4 [ "번호" => "유치원" "라벨" => "유치원" "주문" => 1 "gid" => "aa71da69-93ab-11e9-bda9-06f442b19d06" ] 1 => 배열:4 [ "번호" => "TK" "라벨" => "임시 유치원" "주문" => 2 "gid" => "d3c6754a-6298-48d0-9afa-6a19bafb8464" ] 2 => 배열:4 [ "번호" => "K" "라벨" => "유치원" "주문" => 3 "gid" => "a815a771-9aff-4020-b7d2-0c95a05da21e" ] ] ]</pre> <p>그런 다음 배열을 반복하려고 시도하고 유형이 문자열이 아닌 요소(예: order 요소)를 찾으면 foreach() 오류에 대해 잘못된 인수가 제공됩니다. 오류 메시지는 foreach() 행에 문제가 있음을 나타냅니다. 다음은 코드 예입니다. </p> <pre class="brush:php;toolbar:false;">foreach($arrTree as $k => $v) { if (is_string($v)) { //여기서 뭔가를 하세요 } }</pre> <p>여기서 기본적인 내용이 빠졌다고 확신하지만 문제를 찾는 데 지쳤습니다. 감사해요. </p>
P粉769045426P粉769045426417일 전464

모든 응답(1)나는 대답할 것이다

  • P粉615886660

    P粉6158866602023-07-31 15:41:35

    문제는 $arrTree가 다차원 배열이라는 것입니다.

    코드의 foreach 루프는 중첩된 배열(예: "등급")이 아닌 배열의 첫 번째 수준만 통과합니다. "등급"이 발견되면 $v의 값은 문자열이 아니라 배열이므로 is_string($v) 검사가 실패합니다.

    이 구조를 처리하려면 중첩된 foreach 루프를 추가해야 합니다.

    다음은 이를 달성하는 방법을 보여주는 예입니다.

    으아아아

    회신하다
    0
  • 취소회신하다