为什么以及何时使用&$结果是PHP?
我们试图从函数内部调用同一个函数,但它不起作用 我们相信有一个&$result变量应该放在某个地方,我们已经在其他人编写的代码的其他部分看到了它,但我们不知道它在哪里以及如何工作 有人能解释一下吗 如果您想查看,以下是我们的代码:为什么以及何时使用&$结果是PHP?,php,function,Php,Function,我们试图从函数内部调用同一个函数,但它不起作用 我们相信有一个&$result变量应该放在某个地方,我们已经在其他人编写的代码的其他部分看到了它,但我们不知道它在哪里以及如何工作 有人能解释一下吗 如果您想查看,以下是我们的代码: $parentID = $_POST['id']; $choosenCategory = $_POST['choosenCategory']; $count = 0; function count_child($parentID, $choosenCategory)
$parentID = $_POST['id'];
$choosenCategory = $_POST['choosenCategory'];
$count = 0;
function count_child($parentID, $choosenCategory){
foreach($parentID as $thisID){
foreach($_SESSION['items'][$thisID]['Children'] as $ChildID){
$DatabaseID = $ChildID;
$ItemCategory = $_SESSION['items'][$DatabaseID]['ItemCategory'];
$ItemName = $_SESSION['items'][$DatabaseID]['ItemName'];
$ItemStatus = $_SESSION['items'][$DatabaseID]['ItemStatus'];
$ParentID = $_SESSION['items'][$thisID]['DatabaseID'];
$Children = $_SESSION['items'][$DatabaseID]['Children'];
$Dependencies = $_SESSION['items'][$DatabaseID]['Dependencies'];
if($ItemCategory == $choosenCategory){
$count++;
}
if($ItemCategory !== "RWP" && $ItemCategory !== "US" && $levels === "all"){
$array = array();
count_child($ChildID, $choosenCategory);
}
}
}
}
count_child($parentID, $choosenCategory);
$json = json_encode($count);
echo $json;
无论我们输入什么,它总是输出0。尝试从函数返回
$count
像这样:
$parentID = $_POST['id'];
$choosenCategory = $_POST['choosenCategory'];
function count_child($parentID, $choosenCategory){
$count = 0;
foreach ($parentID as $thisID){
$aChild = &$_SESSION['items'][$thisID]['Children'];
foreach ($aChild as $ChildID){
$DatabaseID = $ChildID;
$ItemCategory = $_SESSION['items'][$DatabaseID]['ItemCategory'];
$ItemName = $_SESSION['items'][$DatabaseID]['ItemName'];
$ItemStatus = $_SESSION['items'][$DatabaseID]['ItemStatus'];
$ParentID = $_SESSION['items'][$thisID]['DatabaseID'];
$Children = $_SESSION['items'][$DatabaseID]['Children'];
$Dependencies = $_SESSION['items'][$DatabaseID]['Dependencies'];
if ($ItemCategory == $choosenCategory){
$count++;
}
if ($ItemCategory !== "RWP" && $ItemCategory !== "US" && $levels === "all"){
$array = array();
paint_child($ChildID, $choosenCategory);
}
}
}
return $count;
}
$count = count_child($parentID, $choosenCategory);
$json = json_encode($count);
echo $json;
根据php版本和使用的数据类型,php会在调用函数时创建数据的副本。该副本在该函数中使用。现在修改数据时,副本将被修改。稍后当调用完成时,副本将被删除(在每个递归步骤中的每个函数调用中)。该操作避免复制并发送引用(&O)。不会创建任何副本。引用运算符也可以在函数参数中的返回值中使用,但在函数参数中更常见。我在代码中没有看到&$result或您正在谈论的递归函数。很抱歉,键入错误!现在修复了@sanderbackus在哪个$\u会话上的问题?如果我把它放在foreach($\u SESSION['items']…作为$childID)中,它甚至不会编译