2011-12-15 2 views
0

深くネストされた配列が与えられた場合:$array = array('nested' => array('so' => array('deep' => array())));最も深いレベルへの参照を使用してネストされた配列への索引付け?

...より速く/「より良い」ですか?

$array['nested']['so']['deep'][0] = 'a'; 
$array['nested']['so']['deep'][1] = 'b'; 
$array['nested']['so']['deep'][2] = 'c'; 

または

$deep = &$array['nested']['so']['deep']; 
$deep[0] = 'a'; 
$deep[1] = 'b'; 
$deep[2] = 'c'; 

それとも彼らは同じですか?もしそうなら、1つが好ましいのですが、なぜですか?

+0

プロファイルを作成する必要があります([xdebugなど](http://www.sitepoint.com/faster-php-apps-profile-your-code-with-xdebug/)を参照)。 – mario

答えて

3

通常、参照を保持することは、より迅速かつ簡単に管理できます。ただし、複数回アクセスしない限り、違いはありません。ハッシングは速いです。私が最近走ったテストでは、ハッシングが以前よりも速いことがわかりました。参照によってバイパスするレベルが増えるほど、改善が多く見られます。

ただし、私にとって最も重要なことは、を維持する方が簡単だということです。ほとんどの場合、パフォーマンスの向上はごくわずかです。私はパフォーマンスのためにそれをやっても構いませんが、あなたのコードを読みやすくするならば、私はそれだけです。あなたはおそらく別の変形逃し

2

:より速く、より良い

$deep[0] = 'a'; 
$deep[1] = 'b'; 
$deep[2] = 'c'; 
$array['nested']['so']['deep'] = $deep; 

が多くを依存して、これらの用語は、非常に広範です。より速くタイプする?あなた自身で決定してください。速く実行するには?私はそれが一般的な形で知る価値があるとは思わない、これは具体的な場所に違いを生むことができるが、それから具体的にもそれを測定する必要がある。

関連する問題