[英]Recursive cURL function php
我在使用php函數時遇到問題,它是一個遞歸函數-似乎可以正常工作,因為如果我轉儲數組,我會看到項目已添加到數組中。 但是當我想返回數組時,我得到一個null
。
api函數是處理http curl
的api調用的http curl
包裝函數-正常工作, $arr
get填充了db_address
項目-但返回不返回數組-如果我var_dump
結果我得到了Null
,如果我print_r
結果只得到1
。
function get_all_db_addresses($arr, $skip){
if(!isset($arr)){
$arr = [];
}
if(!isset($skip)){
$skip = 0;
}
$db_addresses = json_decode(db_api('GET', 'DbAddress?$skip=' . $skip), true);
$arr = array_merge($arr, $db_addresses['value']);
if(!array_key_exists('@odata.nextLink', $db_addresses)){
return $arr;
} else {
$skip += 20;
get_all_db_addresses($arr, $skip);
}
}
我在這里做錯什么了嗎? 我看不到我在做什么錯..
您需要創建全局變量並將其下一個數組合並
function get_all_db_addresses($skip)
{
if(!isset($skip)){
$skip = 0;
}
$db_addresses = json_decode(db_api('GET', 'DbAddress?$skip=' . $skip), true);
$arr = array();
if(!array_key_exists('@odata.nextLink', $db_addresses)){
$arr = array_merge($arr, $db_addresses['value']);
} else {
$skip += 20;
$arr = array_merge($db_addresses['value'], get_all_db_addresses($skip));
}
return $arr;
}
不確定,但是可能無法正常工作,因為我無法測試您的數據
嘗試這個:
function get_all_db_addresses($arr = [], $skip = 0){
$db_addresses = json_decode(db_api('GET', 'DbAddress?$skip=' . $skip), true);
$arr = array_merge($arr, $db_addresses['value']);
if(!array_key_exists('@odata.nextLink', $db_addresses)){
return $arr;
} else {
$skip += 20;
return get_all_db_addresses($arr, $skip);
}
}
您必須為遞歸調用添加返回語句。 提示:不要檢查是否設置了參數-為其設置默認值。
您有2個問題:
檢查一下:
function get_all_db_addresses($arr = array(), $skip = 0)
{
$db_addresses = json_decode(db_api('GET', 'DbAddress?$skip=' . $skip), true);
if (isset($db_addresses['value'])) {
$arr = array_merge($arr, $db_addresses['value']);
}
if (array_key_exists('@odata.nextLink', $db_addresses)) {
return get_all_db_addresses($arr, $skip + 20);
}
return $arr;
}
您的代碼中的問題:
解:
您的功能應對此進行修改,以使其正常工作(未經測試):
function &get_all_db_addresses(&$arr = [], $skip = 0) {
// ...
if(array_key_exists('@odata.nextLink', $db_addresses)){
get_all_db_addresses($arr, $skip + 20);
}
return $arr;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.