2016-10-03 5 views
0

PHP 백엔드에 게시하는 JSON을 반복하려고합니다. json으로는 다음과 같습니다PHP에서 JSON 반복하기

[ 
    { 
     "number":"5613106" 
    }, 
    { 
     "number":"56131064" 
    }, 
    { 
     "number":"56131063" 
    } 
] 

내가 지금처럼 우체부에서 게시 : 나는

echo $number; 
를 사용하여 I 개별적으로 게시 한 각 번호를 인쇄 할 수 있도록하려면

enter image description here

바로 지금 다음을 사용하면 마지막 숫자가 인쇄됩니다.

$number = $json['number']; 
echo $number; 

내 기능 :

public function check_users_post() 
{ 
    $json = $this->request->body; 
    print_r($json); 
    $this->response($json, REST_Controller::HTTP_OK); 
} 

출력 :

Array 
(
    [0] => Array 
     (
      [number] => 5613106 
     ) 

    [1] => Array 
     (
      [number] => 56131064 
     ) 

    [2] => Array 
     (
      [number] => 56131063 
     ) 

) 
+0

가능한 중복 : //stackoverflow.com/questions/2543389/how-to-decode-a- json-string) – jitendrapurohit

답변

1

는 다음과 같이 수행 당함 :

public function check_users_post() 
{ 
    $json = $this->request->body; 

    $jsonIterator = new RecursiveIteratorIterator(
     new RecursiveArrayIterator($json), 
     RecursiveIteratorIterator::SELF_FIRST); 

    $phone_numbers = ""; 

    foreach ($jsonIterator as $key => $val) { 
     if(is_array($val)) { 

     } else { 
      $phone_numbers = "$phone_numbers" . ", " . "$val"; 
     } 
    } 

    $phone_numbers = substr($phone_numbers, 2); 
    $phone_numbers = "(" . $phone_numbers . ")"; 

    $query = $this->db->query("SELECT * FROM users WHERE user_number in $phone_numbers;"); 
    $result = $query->result(); 
    $this->response($result, REST_Controller::HTTP_OK); 

    if (mysql_num_rows($result)==0) { 
     $data = [ 'message' => 'No users returned']; 
     $this->response($data, REST_Controller::HTTP_BAD_REQUEST); 
    } else { 
     $this->response($result, REST_Controller::HTTP_OK); 
    } 
} 
[A JSON 문자열을 디코딩하는 방법 (HTTP의
1

사용

json_decode() 

PHP 통해 PHP 변수 또는 배열하고 루프 백 JSON를 디코딩 기능 내장 각 색인 및 인쇄 번호.

+0

json_decode ($ json)를 사용하면 다음과 같은 메시지가 나타납니다. 메시지 : json_decode()는 매개 변수 1이 주어진 문자열 일 것으로 기대합니다. 우편 배달부를 통해 json을 보내지 않았습니까? –

+0

@RutgerHuijsmans 당신이 이미 그렇게하고 있다면, 당신은 이미 완성 된 코드를 게시하고'print_r ($ json);'을 수행하여 이미'$ json' 안에있는 것을 볼 수 있습니다. .. – matiaslauriti

+0

다음은 json_decode ($ json [0])입니다. – Sagar

2

희망이 일반 반복기가 도움이 될 것입니다.

$jsonIterator = new RecursiveIteratorIterator(
     new RecursiveArrayIterator(json_decode($json, TRUE)), 
     RecursiveIteratorIterator::SELF_FIRST); 


foreach ($jsonIterator as $key => $val) { 
    if(is_array($val)) { 
     echo "$key:\n"; 
    } else { 
     echo "$key => $val\n"; 
    } 
} 
+0

답변의 일부를 사용하여 최종 답변을 제시했습니다. 감사! –

0

설명 나중에 당신이 에코하려는 각 키를 줄 것이다 foreach 루프를 사용하여이 배열을 반복하면 배열을 제공 JSON_DECODE() 함수를 사용하여보다 먼저, 당신의 JSON을 캐릭터 라인 화

.

코드

   $str = '[ 
        { 
        "number":"5613106" 
        }, 
        { 
        "number":"56131064" 
        }, 
        { 
        "number":"56131063" 
        } 
       ]'; 
      $array = json_decode($str, true); 
      echo "<pre>"; 
      foreach ($array as $key => $key_value) { // then loop through it 
       echo "<br>"; 
       echo $array[$key]['number']; 
       echo "<br>"; 
      } 

출력이

5613106 

56131064 

56131063 
+0

JSON을 어떻게 문자열 화합니까? –

+0

지금 내 대답에 따라 테스트 할 수 있습니다. –