次のように、foreach ループ内で変数を宣言するとします。
foreach($myArray as $myData) {
$myVariable = 'x';
}
PHPはそれを破棄し、反復ごとに再作成しますか? 言い換えれば、パフォーマンスに関して次のことを行う方が賢明でしょうか。
$myVariable;
foreach($myArray as $myData) {
$myVariable = 'x';
}
あなたの洞察を前もってありがとう。
あなたの最初の例では:
foreach($myArray as $myData) {
$myVariable = 'x';
}
$myVariable
最初の反復中に作成され、以降の反復ごとに上書きされます。スクリプト、関数、メソッドなどのスコープを離れる前に、いつでも破棄されることはありません...
あなたの2番目の例では:
$myVariable;
foreach($myArray as $myData) {
$myVariable = 'x';
}
$myVariable
反復の前に作成され、null に設定されます。各反復中に if は上書きされます。スクリプト、関数、メソッドなどのスコープを離れる前に、いつでも破棄されることはありません...
主な違いについては触れませんでした。If $myArray
is empty ( count($myArray) === 0
)$myVariable
は最初の例では作成されませんが、2 番目の例では null の値で作成されます。
最初の例の私のIDE(NuSphere PHPed)のデバッガによると:
foreach($myArray as $myData) {
$myVariable = 'x';
}
$myVariable
一度だけ作成されます。
私の実験によると、それは同じです:
<?php
for($i = 0; $i < 3; $i++) {
$myVariable = $i;
}
var_dump($myVariable);
プリント: int(2)
<?php
$myVariable;
for($i = 0; $i < 3; $i++) {
$myVariable = $i;
}
var_dump($myVariable);
プリント: int(2)