Php 如何用不同的方法将值从递归函数传递到数组中
我正在努力用另一种方法将值从递归函数传递到数组中。我已经在下面编写了递归函数Php 如何用不同的方法将值从递归函数传递到数组中,php,arrays,codeigniter,recursion,rabbitmq,Php,Arrays,Codeigniter,Recursion,Rabbitmq,我正在努力用另一种方法将值从递归函数传递到数组中。我已经在下面编写了递归函数 function get_parent_basket_id($parent_id) { if($parent_id==NULL){ return false; } $baskets = $this->Model_cds_clients->clients($parent_id)->result(); if(count($bas
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_CD_客户端代码如下
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)
下面是我的函数,我需要将变量传递到端点数组下的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);
请帮忙 我不确定这是否是你想要的,但这正是我想要的 更改:
foreach ($baskets as $row) {
if($row->parent_id==0){
return $row->id;
} else {
$this->get_parent_basket_id($row->parent_id);
}
}
致:
在递归函数中。这样,id实际上会被传递回去
然后,在控制器中,将结果分配给变量,即
$parent_basket_id = $this->get_parent_basket_id($parent_id);
但是,看起来您并没有将$parent\u id声明/传递给\u construct()
,因此我不确定这是如何工作的
希望这有帮助 尾部递归的基本情况看起来不太正确。您的直接呼叫需要返回结果。我已将您的方法重新考虑如下:
function get_parent_basket_id($parent_id) {
if(!$parent_id){
return false;
}
// Your method chaining is missing brackets on $this->Model_cds_clients()
$baskets = $this->Model_cds_clients()->clients($parent_id)->result();
if(!count($baskets)){
return false;
}
foreach ($baskets as $row) {
if(!$row->parent_id){
return $row->id;
} else {
// Add a return here
return $this->get_parent_basket_id($row->parent_id);
}
}
}
我希望前面的代码对您有所帮助。:) 你在哪里调用
get\u parent\u basket\u id()?您没有将结果分配给变量。按照这里的流程,我遇到了一个问题。我的方法get\u parent\u basket\u id的结果应该通过。您希望得到什么结果?您的代码帮助解决了我的问题。非常感谢。你的帮助也有助于解决我的问题。
function get_parent_basket_id($parent_id) {
if(!$parent_id){
return false;
}
// Your method chaining is missing brackets on $this->Model_cds_clients()
$baskets = $this->Model_cds_clients()->clients($parent_id)->result();
if(!count($baskets)){
return false;
}
foreach ($baskets as $row) {
if(!$row->parent_id){
return $row->id;
} else {
// Add a return here
return $this->get_parent_basket_id($row->parent_id);
}
}
}