代码之家  ›  专栏  ›  技术社区  ›  Rutger Huijsmans

在PHP中循环使用JSON

  •  0
  • Rutger Huijsmans  · 技术社区  · 8 年前

    我正在尝试循环使用我发布到PHP后端的JSON。JSON如下所示:

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

    enter image description here

    我希望能够打印我使用单独发布的每个数字

    echo $number;
    

    $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
            )
    
    )
    
    4 回复  |  直到 8 年前
        1
  •  2
  •   Rohith K N    8 年前

    希望这个通用迭代器能对您有所帮助。

    $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";
        }
    }
    
        2
  •  1
  •   Sagar    8 年前

    使用

    json_decode()
    

    PHP内置函数,用于将json解码回PHP变量或数组,然后循环遍历每个索引和打印编号。

        3
  •  1
  •   Rutger Huijsmans    8 年前

    这样做:

    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);
        }
    }
    
        4
  •  0
  •   Ahmer Saeed    8 年前

    描述

    首先将JSON字符串化,然后使用JSON_DECODE()函数,该函数将为您提供数组,然后使用foreach循环对该数组进行迭代,从而为您提供要回显的每个键。

    密码

                 $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