我使用Laravel 5.2并制作如下代码,为什么变量结果不同($ mems和$ member)
// Topup.php
$service = new \Spektr\Libraries\Service;
$member= $service->calc_bonus(2, 3);
print"Topup Result";
print_r($member);
这是我的服务类
<?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 B
THX
答案 0 :(得分:0)
$ member是topup.php中的变量将其声明为数组
$service = new \Spektr\Libraries\Service();
$member = array();
$member= $service->calc_bonus(2, 3);
print"Topup Result";
print_r($member);
测试您的代码,使用上述更改。
答案 1 :(得分:0)
我已经根据@ 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;
}
}