你能解释一下php代码吗

你能解释一下php代码吗,php,Php,$categories(它是一个chanined列表,包含一个self id和一个foreign id)是一个列表,$categories是类别的一个元素。 我不知道这行是什么意思$category->parentId==$cat[0]->id 为什么[0]?为什么一直是0?您能解释一下整个代码吗?if正在检查当前类别Id是否与父Id相同,然后返回一个数组,否则它将再次运行以查找下一个父Id function getParent(&$categories, $category){

$categories(它是一个chanined列表,包含一个self id和一个foreign id)是一个列表,$categories是类别的一个元素。 我不知道这行是什么意思
$category->parentId==$cat[0]->id

为什么[0]?为什么一直是0?您能解释一下整个代码吗?

if正在检查当前类别Id是否与父Id相同,然后返回一个数组,否则它将再次运行以查找下一个父Id

function getParent(&$categories, $category){
    foreach ($categories as &$cat){
        if($category->parentId==$cat[0]->id){
            $cat["subCategories"][$category->id] = array($category,"subCategories"=>array());
            return $cat;
        }
        else if(isset($cat["subCategories"])){
            $this->getParent($cat["subCategories"], $category);
        }
    }
}
[0]是常量,因为它引用数组中的第一项,因此不知道数组键,这是一种简写

php中的数组可以有一个键$cat['current_id'],如果这是第一个键,那么它也将是$cat[0],给出相同的结果

$category->parentId == $cat[0]->id
对于键0,1,2,3,所有数组都从0开始


什么是
$categories
?这可能是一个数组数组。发布一个来自
var\u dump($categories)
的示例输出,但它是从浏览器页面源代码复制的,而不是由浏览器呈现的,因此换行符保持不变。看起来很简单,需要更多的上下文才能真正了解它在做什么。
$category
显然是一个对象,
$categories
是一个多维数组。我猜$categories是一个结果集,可以包含多条记录,但在本例中只返回一条记录。非常感谢您提供了非常详细的解释。“当前类别Id与父Id相同”-您的意思是当前元素是否包含相同的Id-s?因为我在数据库中看到,在顶层(没有parrent),父id是0Yes,它们的值相同。父ID 0通常用于树或根类别中的顶部类别,因此它将没有父类别。因为键和值通常不相同,但可以相同。我还看到,在数据库中,第一列是id int。这种情况下,为什么使用$cat[0]->id而不是$cat[0]?$cat[0]->id表示它是一个数组项,但该项是一个对象,因此使用->如果它是数组外的数组,则使用该键可以看到$cat[0]['id']。
$array = Array('current_id' => 55, 'title' => 'first one');

echo $array['current_id'];

echo $array[0];

if ($array['current_id'] == $array[0]){ echo 'Same'; } else { echo 'Not Same'; }
if ($array['current_id'] == $array[1]){ echo 'Same'; } else { echo 'Not Same'; }