我可能会遇到一个简单的问题。我在里面创建了一个包含许多计算的新类。我有一个递归数组,从Die结果动态生成SQL。当结果在给定范围之间时,我将不得不进行额外的操作。
我有这个多维数组来填充我的骰子的值,使用一组ID作为我的第一个“关键”:
$this->multidim[$id_object][]
我正在考虑创建另一个函数来填充它,但我不确定如何正确构建它。我需要的这个功能的规格如下:
$this->checkresult($id_obj, $die);
function checkresult($id_obj, $die)
{
if ($die == 100){
$rand1 = $this->launchDie(1, 100);
$rand2 = $this->launchDie(1, 100);
if($this->checkresult($array, $rand1)) {
if($this->checkresult($array, $rand2)) {
return 1;
}
}
} else {
if (!isset($array[$tiro])) {
$this->multidim[$id_obj][$die] = 1;
}
return 1;
}
}
这种做法是否正确?我觉得不回复“真正的”值感到不舒服,但正如我所说,我需要递归地重新调用该函数。
答案 0 :(得分:0)
您可以像这样返回滚动值:
public function addResult($object_id, $result)
{
$this->multidim[$object_id][] = $result;
}
public function checkResult($object_id)
{
$roll = $this->launchDie(1, 100);
if ($roll == 100) {
$additionalRoll = $this->checkResult($object_id);
$this->addResult($object_id, $additionalRoll);
$roll = $this->checkResult();
}
return $roll;
}
并称之为:
$this->addResult($object_id, $this->checkResult($object_id));
这种方式每次滚动100时,将有两个卷而不是一个卷。请注意,这可能会永远持续下去(不太可能,但是))。
另请注意,我更改了multidim数组的结构,因为这对我来说更有意义,如果它与您想要实现的不匹配,您可能需要更改它。