此问题已在此处有答案:
How to use return inside a recursive function in PHP(4个答案)
14小时前关闭
我正在努力将一个值从一个递归函数传递到一个不同方法中的数组中。我在下面写了我的递归函数。
function get_parent_basket_id($parent_id) {
if($parent_id==NULL){
return false;
}
$baskets = $this->Model_cds_clients->clients($parent_id)->result();
if(count($baskets)==0){
return false;
}
foreach ($baskets as $row) {
if($row->parent_id==0){
return $row->id;
} else {
$this->get_parent_basket_id($row->parent_id);
}
}
}
我的Model_cds_clients代码如下
function clients ($parent_id) {
$this->db->select('endpoint, parent_id');
$this->db->from('cds_clients');
$this->db->where('parent_id', $parent_id);
$this->db->where('active', 1);
$result = $this->db->get();
return $result;
}
模型的表结构如下所示
id - int(11)
name - varchar(255)
endpoint - varchar(64)
active - tinyint(1)
parent_id - int(11)
下面是我的函数,我需要将变量传递到endpoints数组下的client_id中。
public function __construct() {
parent::__construct();
$this->load->model('Model_story');
$this->get_parent_basket_id($parent_id);
$data = array(
'basket_id' => $this->basketId,
'story_id' => $this->storyId,
'payload' => $this->xmlString,
'endpoints' => array(
array(
'client_id' => XXXX,
'endpoint_url' => 'http://www.example.com/consume.php'
), )
);
$json_payload = json_encode($data);
请帮帮我
2条答案
按热度按时间xam8gpfp1#
我不确定这是不是你要找的,但这就是我要找的
变更:
致:
在你的递归函数中。这样,ID实际上会被传递回来。
然后,在控制器中,将结果分配给一个变量,即
然而,看起来你并没有声明/传递$parent_id到
__construct()
,所以我不确定这是如何工作的。希望这个有帮助!
olhwl3o22#
尾递归的基本情况看起来不太正确。您的直接调用需要返回结果。我已经重构了你的方法如下: