将 JSON 响应值放入新数组 (PHP)
Put JSON response value into new array (PHP)
我正在尝试使用 Yelp API。为了得到我需要的信息,我首先需要调用Yelp搜索API,提取场地的ID,然后使用ID调用Yelp业务API 深入了解我需要的信息。
由于我正在使用 curl_multi 进行相当多的 API 调用,因此我需要以数组形式发送数据。我第一次调用 Yelp 搜索 API,我能够看到返回的 ID。但是,我随后尝试将这些 ID 放入一个新数组中,以在第二个 curl_multi 到 Yelp 业务 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 只是 returns 一个包含 20 个 NULL 值的数组。
任何人都可以解释一下吗?
谢谢
在另一个循环中,您仍然会看到 vardump。这部分代码有效...请参阅此沙箱 link:
http://sandbox.onlinephpfunctions.com/code/ddc4084713ae8ac15783ac653466524556b4169a
但是在另一个循环中,您的 $idArray 可能被重置为空。
您确实意识到您的 $idArray
对象是在每个新的 'iteration' 上创建的。也许最后一次迭代有空值?并且 var_dump
只打印最后一个数组对象(在循环完成后)——因为转储在循环之外
移动数组:
$idArray = array();
$testNull = array();
在循环之上所以:
$idArray = array();
$testNull = array();
for ($i = 0; $i < 20; $i++) {
....
}
我正在尝试使用 Yelp API。为了得到我需要的信息,我首先需要调用Yelp搜索API,提取场地的ID,然后使用ID调用Yelp业务API 深入了解我需要的信息。
由于我正在使用 curl_multi 进行相当多的 API 调用,因此我需要以数组形式发送数据。我第一次调用 Yelp 搜索 API,我能够看到返回的 ID。但是,我随后尝试将这些 ID 放入一个新数组中,以在第二个 curl_multi 到 Yelp 业务 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 只是 returns 一个包含 20 个 NULL 值的数组。
任何人都可以解释一下吗?
谢谢
在另一个循环中,您仍然会看到 vardump。这部分代码有效...请参阅此沙箱 link:
http://sandbox.onlinephpfunctions.com/code/ddc4084713ae8ac15783ac653466524556b4169a
但是在另一个循环中,您的 $idArray 可能被重置为空。
您确实意识到您的 $idArray
对象是在每个新的 'iteration' 上创建的。也许最后一次迭代有空值?并且 var_dump
只打印最后一个数组对象(在循环完成后)——因为转储在循环之外
移动数组:
$idArray = array();
$testNull = array();
在循环之上所以:
$idArray = array();
$testNull = array();
for ($i = 0; $i < 20; $i++) {
....
}