Php I';我在做啧啧,但我不懂这个语法

Php I';我在做啧啧,但我不懂这个语法,php,procedural-programming,Php,Procedural Programming,我通常编写oop代码,这可能就是为什么我从未见过这种编码方式。我不理解下面多维数组中的语法,为什么[$obj->id]['label']不仅仅是$obj['id']['label']] $sql = "SELECT id, label, link_url, parent_id FROM dyn_menu ORDER BY parent_id, id ASC"; $items = mysql_query($sql); while ($obj = mysql_fetch_object($items)

我通常编写oop代码,这可能就是为什么我从未见过这种编码方式。我不理解下面多维数组中的语法,为什么
[$obj->id]['label']
不仅仅是
$obj['id']['label']]

$sql = "SELECT id, label, link_url, parent_id FROM dyn_menu ORDER BY parent_id, id ASC";
$items = mysql_query($sql);
while ($obj = mysql_fetch_object($items)) {
    if ($obj->parent_id == 0) {
        $parent_menu[$obj->id]['label'] = $obj->label;
        $parent_menu[$obj->id]['link'] = $obj->link_url;
    } else {
        $sub_menu[$obj->id]['parent'] = $obj->parent_id;
        $sub_menu[$obj->id]['label'] = $obj->label;
        $sub_menu[$obj->id]['link'] = $obj->link_url;
        if (!isset($parent_menu[$obj->parent_id]['count'])) {
            $parent_menu[$obj->parent_id]['count'] = 0;
        }
        $parent_menu[$obj->parent_id]['count']++;
    }
}
mysql_free_result($items);

这是因为获取结果行作为对象。其他的,例如,将结果行作为关联数组来获取。

[$obj->id]['label']
$obj['id']['label']
甚至都不是一回事

$parent\u菜单[$obj->id]['label']
$obj->id
键进入
$parent\u菜单的值中获取
'label'
键的值
$obj['id']['label']
$obj
数组(非数组)中具有
'id'
键的值获取具有
'label'
键的值


数组键和属性在PHP中是不可互换的,因为它们在JavaScript中是可互换的。

有不同的值:

$obj->id
有一个值,它引用一个值。如果只写“id”,则引用键“id”(作为字符串)

假设您有一个属性id设置为341的obj

这个阵列:

$sub_menu = array(
    2 => array(
        'name' => 'Blog',
        'label' => 'My Blog'
    ),
    341 => array(
        'name' => 'Downloads',
        'label' => 'Downloads'
    ),
    'id' => array(
        'name' => 'Tutorials',
        'label' => 'Tutorials Awesome!'
    )
);
因此,当您调用数组时:

$sub_菜单[$obj->id]['label']
那么您实际上正在呼叫:
$sub_菜单[341]['label']
这等于“下载”

如果你打电话
$sub_menu['id']['label']
然后用键'id'调用子菜单。 这相当于“教程太棒了!”

简单地说:

$parent_menu[$obj->id]['label'] = $obj->label;
相当于:

$myID = $obj->id;
$parent_menu[$myID]['label'] = $obj->label;

操作是检索
$obj
的class属性
id
的值,并将其用作
$parent\u菜单
数组中的索引。

这是一种动态访问任何数组键的方法。
$obj->id
的值用于访问数组键。我以为您理解OOP$obj是一个对象。(关于mysql的强制性注释*)-。它们不再得到维护和维护。看到红色的盒子了吗?相反,要了解并使用or-无论是
[$obj->id]['label']
还是
$obj['id']['label']]
都不是有效的语法-你在这里问什么?@minitech:真的吗?我希望PHP在初始化和索引同一行中的数组时强加任意规则。