2011-07-26 4 views
10

를 여기에 JSON 형식의 문자열 내 PHP 코드 그러나 나는 매우 단순한 prob에 붙이게된다. 그러나 나는 아침의 대부분을 이해하려고 노력하는 데에 썼다. 내 코드의 결과는 위의 나에게 다음과 같은 결과를 제공하는 이유PHP는 json_decode는 어떻게 출력 배열

는 내가 이해 할 것은 :

"items: Array"

그리고 아니 내가 원하는 /을 기대할 :

"items: W 7th Ave" 
"items: W 8th St" 

무엇 내가 실종 됐어? 배열의 "항목"에서 "주소"가 다음 "레벨"로 떨어지지 않았습니까?

+0

'foreach' 부분에서'$ json'은'array'를 반환합니다. – Tarik

답변

14
$string = file_get_contents('./string.json'); 
$json = json_decode($string); 

items: <address> 갖고 싶어 :

print_r($json); 

하여 인쇄 할 것이다 : 당신이 배열은 당신이를 통해 인쇄 할 수있는 구축 방법에 대한 확실하지 않은 경우 어쨌든

foreach ($json['items'] as $address) 
{ 
    echo "items:". $address['address'] ."\n"; 
}; 

를 :

Array 
(
    [items] => Array 
     (
      [0] => Array 
       (
        [address] => W 7th Ave 
       ) 

      [1] => Array 
       (
        [address] => W 8th St 
       ) 
     ) 
) 

이제 $json에 두 배열의 배열 (items)이 포함되어 있다는 것을 알게되었습니다. 루프를 사용하면 예제에 인쇄 된 배열을 얻을 수 있습니다. 위에서 설명한대로 items 배열의 요소를 반복하여 요소를 인쇄하여 한 단계 더 자세하게 이동해야합니다. http://pastie.org/2275879

1

항목 배열에 있습니다

여기에 전체 스크립트입니다. 이 같은 그들을 통해 당신은 할 수 루프 :

foreach ($json['items'] as $address) 
{ 
    echo 'Address: '.$address; 
} 
1

BTW, 나는 위해서 var_dump, 인쇄, 인 print_r을 배열 구조 등에 대한 자세한 내용을 보려면 시도, 배열에 Object에서 앞뒤로 전환했고, 또한 무리를했다 에코의 변형, for 및 foreach 루프 등 배열에서 원하는 것을 얻으려고합니다.

  • 다음 $의 JSON에 배열을 디코딩 전체 배열, 예를 들면 $ 문자열을 얻을 수 (한 것을)
    • 첫 번째 (그랬어) :

      좋아 이렇게 요약, 답변 내가해야 표시하는 것

    • 그런 다음 $ json의 하위 배열을 구문 분석합니다 ("items.address"또는 "[items] [address]"등의 배열에있는 주소를 참조하는 것과 같은 작업을 수행하여 위의 대답에서 확실하지 않습니다. 이 일을 그들은 힌트를하지만 문법을 볼 수 없습니까?)

  • 내가 모두 답변을 시도하고있어 : 내가 가진

    :

    이 TaylorOtwell 응답을 사용하여 주소 : 배열 주소 : 배열

    테일러

    달렌의 답변을 사용 :

    내가 갖고있는 것 : 0 : 배열 1 : 배열

    나는 어떻게 든 배열을 통해 첫 번째 foreach 내에서 실제 값을 얻으려면 두 번째 시간이 필요합니까?

    이렇게 표시 되나요?

    foreach ($json['items'] as $key => $value) 
    { 
    foreach ($json['items']['address'] as $key => $value) 
    { 
        echo "$key: $value\n"; 
    }; 
    }; 
    
    +0

    좋아, 내가 포인트를 얻은 것 같아, 내 두 foreach 성명을 업데이 트했습니다 그들을 테스트하려고, 그들은 두 대신 foreach 한 단지를 사용하게됩니다 – Dalen

    +0

    아, 성공. 내가 놓친 문법은 $ address [ 'address'] .. 감사합니다! 내 json 문자열은 items 배열에서 실제로 190 개의 주소입니다. 별도의 파일에 $ string에서 직접 참조하고 싶지만 $ string = './items.json'에 의해 선택되지 않습니다. 내가 시도한 일부 json 문자열에 대해 작동하지 않습니다. 나는 복사 & 붙여 넣기 전체 문자열을 $ 문자열로 php 파일에 잘 작동하지 않습니다. 원격 json 파일을 참조 할 때 어떤 구문을 사용합니까? – curtisp

    +0

    나는 내 대답을 다시 편집했다. 코드의 처음 두 줄을 확인한다. – Dalen

    -1

    $string='{"address":["W 7th Ave","W 8th St"]}';

    $json = json_decode($string, true);
    echo'<pre>';
    print_r($json);
    echo'</pre>';
    foreach ($json['address'] as $key=>$value){
    다음과 같이 사용자의 입력 문자열을 단순화 할 수 있습니다


    };

    +0

    이것은 그가 보여준 json 파싱의 op 문제를 해결하지 못합니다. – pascalhein

    0

    먼저 요소에 대한 클래스를 만듭니다.

    function getAddress(address) 
    { 
    this.address=address; 
    } 
    

    밀어 *

    $json_array = json_decode($AllAddress, true); 
    for($i=0;$i<count($json_array);$i++) 
    { 
    $eachAddress = json_decode($json_array[$i],true); 
    $address= $eachAddress["address"];//fetch particular element from your JSON Object 
    } 
    

    같은 요소를/백엔드에 배열을 보내기

    AllAddress=JSON.stringify(AddressArray); 
    

    를 사용하여 JSON 어레이로 배열 변환 가져 배열

    newAddress = JSON.stringify(new 
    getAddress(address)); 
    AddressArray.push(newAddress); 
    

    에 객체 내파 (php)를 사용하여 한 번에 배열의 모든 요소를 ​​가져옵니다.