-3

私は通常、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);
4

4 に答える 4

2

これは、mysql_fetch_objectが結果行をオブジェクトとしてフェッチするためです。mysql_fetch_arrayなどの他のものは、結果行を連想配列としてフェッチします。

于 2013-02-07T19:52:18.147 に答える
0

[$obj->id]['label']$obj['id']['label']同じものに近くさえありません。

$parent_menu[$obj->id]['label']in'label'のキーを持つ値からキーを持つ値を取得します。配列(配列ではない)内のキーを持つ値からキーを持つ値を取得します。$obj->id$parent_menu$obj['id']['label']'label''id'$obj

配列のキーとプロパティは、たとえば JavaScript のように、PHP では交換できません。

于 2013-02-07T19:53:54.037 に答える
0

異なる値があります:

$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_menu[$obj->id]['label']次に、実際に呼び出しています。 $sub_menu[341]['label'] これは「ダウンロード」に相当します。

呼び出す場合 $sub_menu['id']['label']は、キー「id」を使用してサブメニューを呼び出しています。これは「Tutorials Awesome!」に相当します。

于 2013-02-07T19:53:54.020 に答える