将JSON响应值放入新数组(PHP)

时间:2016-11-22 22:36:03

标签: php arrays json for-loop array-push

我正在尝试使用Yelp API。为了获得我需要的信息,我首先需要调用Yelp Search API,提取场地的ID,并使用ID调用Yelp Business API来深入查看我需要的信息。

由于我正在进行相当多的API调用,因此我使用curl_multi,因此我需要在数组中发送数据。我第一次调用Yelp Search API,我能够看到返回的ID。但是,我正在尝试将这些ID放入一个新的数组中,以便在第二个curl_multi中使用Yelp Business API。我正在尝试使用array_push,但我无法让它工作。

这是我的代码:

    (EDIT)//A for loop to get the first 20 results   
    for ($i = 0; $i < 20; $i++) {
    // $results contains this search results as an associative array
    $results = reset(json_decode(curl_multi_getcontent($ch[$i]), true));

    //I set up 2 arrays, the $idArray to use in the 2nd API call and $testNull
    $idArray = array();
    $testNull = array();

   //the JSON response is decoded previously and here I go through the first 20 results
    for($j = 0; $j < 20; $j++){
        //Here I put the ID of each venue into $busID
        $busID = $results[$j]['id'];
        //In case the result is null I have set up this if statement
        if(!empty($busID)){
            //This is echoing out the IDs of the venues correctly    
            echo $busID;
            //and here the problem lies - just can't get the IDs in $idArray
            array_push($idArray, $busID);
            }else{
                //I set this up just to test NUll responses from the 1st API call.
                array_push($testNull, $busID);
            }
    }
}
    var_dump($idArray);
    var_dump($testNull);

正如我在评论中所说,回显$ busID确实给了我第一个Yelp API调用的ID,但$ idArray的var_dump只返回一个包含20个NULL值的数组。

任何人都能解释一下吗?

由于

2 个答案:

答案 0 :(得分:0)

在另一个循环中,您仍会看到vardump。此部分代码有效...请参阅此沙箱链接:

http://sandbox.onlinephpfunctions.com/code/ddc4084713ae8ac15783ac653466524556b4169a

但在另一个循环中,你的$ idArray可能被重置为空。

答案 1 :(得分:0)

您确实意识到您的$idArray对象是在每个新的'迭代'上创建的。也许最后一次迭代有空值?并且var_dump只打印最后一个数组对象(在循环完成后) - 因为转储在循环之外

移动阵列:

$idArray = array();
$testNull = array();

在循环的顶部,所以:

$idArray = array();
$testNull = array();
for ($i = 0; $i < 20; $i++) {
   ....
}