我使用的是Laravel 5.2,并编写了如下代码,为什么变量result不同($mems和$member)
//Topup.php
$service = new \Spektr\Libraries\Service;
$member= $service->calc_bonus(2, 3);
print"Topup Result";
print_r($member);这是我的Service类
<?php
namespace Spektr\Libraries;
class Service
{
public function calc_bonus($mem_id, $prd_id, $mems=null) {
$bonus =0;
if(is_null($mems))
$mems=[];
$upline_id=\Spektr\Model\Member::whereMemId($mem_id)->value('upline_id');
if ($upline_id) {
\Log::info("upline-id: ".$upline_id);
$this->calc_bonus($upline_id, $prd_id, $mems);
}
print"service class result :";
print_r($mems);
return $mems;
}
}当我运行topup.php时,页面结果将显示print_r($mems)和print_r($member)的结果,如下所示
service class result :Array
(
[0] => Array
(
[mem_id] => 2
[price] => 5100
[bonus] => 0
)
[1] => Array
(
[mem_id] => 1
[price] => 5000
[bonus] => 100
)
)
service class result :Array
(
[0] => Array
(
[mem_id] => 2
[price] => 5100
[bonus] => 0
)
)
Topup ResultArray
(
[0] => Array
(
[mem_id] => 2
[price] => 5100
[bonus] => 0
)
)为什么Topup.php上的结果只包含一个数组?请帮助我的代码,
我希望来自topup.php的结果包含所有具有成员上行的成员
数据库数据的结构如下所示
mem_id|upline_id|name
1 null member A
2 1 member BThx
发布于 2016-01-11 19:08:47
$member是topup.php中的变量,将其声明为数组
$service = new \Spektr\Libraries\Service();
$member = array();
$member= $service->calc_bonus(2, 3);
print"Topup Result";
print_r($member);测试了你的代码,处理了上面的更改。
发布于 2016-01-12 10:46:46
我基于@raphioly-san的回答得出了这个解决方案
<?php
namespace Spektr\Libraries;
class Service
{
public function calc_bonus($mem_id, $prd_id, $mems=null) {
$bonus =0;
if(is_null($mems))
$mems=[];
$upline_id=\Spektr\Model\Member::whereMemId($mem_id)->value('upline_id');
if ($upline_id) {
\Log::info("upline-id: ".$upline_id);
$mems= $this->calc_bonus($upline_id, $prd_id, $mems); //<<-- add variable $mems
}
print"service class result :";
print_r($mems);
return $mems;
}
}https://stackoverflow.com/questions/34718790
复制相似问题