ホームページ > バックエンド開発 > PHPチュートリアル > PHPのマニュアルについては、複雑な配列を参照することは推奨されていません。対処方法がわかりません。

PHPのマニュアルについては、複雑な配列を参照することは推奨されていません。対処方法がわかりません。

WBOY
リリース: 2016-06-13 13:43:44
オリジナル
775 人が閲覧しました

PHP マニュアルの例として、複雑な配列の参照は推奨されません。混乱している場合は、
以下はマニュアルの原文です。

複雑な配列は引用するよりもコピーするのが最善です。次の例は期待どおりに動作しません。

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?php
$top = array(
    'A' => array(),
    'B' => array(
        'B_b' => array(),
    ),
);

$top['A']['parent'] = &$top;
$top['B']['parent'] = &$top;
$top['B']['B_b']['data'] = 'test';
print_r($top['A']['parent']['B']['B_b']); // array()
?> 

ログイン後にコピー


出力した結果は次のとおりです: Array ( [data] => test )、これは期待されるものではありませんか?
$top['A']['parent'] は $top 変数への参照です ($top['A']['parent'] = &$top;)
['B 以下それ ']['B_b'],
$top['B']['B_b']['data'] = 'test'; で定義された [data] => test ではないでしょうか?
期待どおりに動作しないのはなぜですか?どのように機能すると予想されますか?

-----解決策---------
php リファレンスを見てみましょう住所 !
------解決策---------
各ステップの構造を出力するとわかりますより明確に:

PHP コード

$top = 配列(
            'A' => 配列()、
            'B' => 配列(
                'B_b' => 配列()、
            )、
        );

        $top['A']['parent'] = &$top;
        echo '<pre class="brush:php;toolbar:false">';
        print_r($top['A']['parent']);
        echo '
'; echo '
';
        $top['B']['parent'] = &$top;
        echo '
'; echo '
';
        print_r($top['B']['parent']);
        echo '
'; echo '
';
        $top['B']['B_b']['data'] = 'テスト';
        print_r($top['B']['B_b']);
        echo '
'; echo '
';
        print_r($top['A']['parent']['B']['B_b']); // 配列()
        echo '
'; echo '
;
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート