私は変数を初期化することの重要性を理解しようとしています。たとえば、ループ内に配列を作成しているような稀なケースで、変数に値を割り当てる前に、変数の初期化の重要性は?
たとえば、この例では
foreach($var1 as $key => $val) {
$array[] = $key;
}
私が言われてきた配列を含むように使用される前、$array
が宣言されていない悪い習慣ですが、私は、なぜ分かりません。私は代わりにこれを行うように勧められました。
$array = array();
foreach($var1 as $key => $val) {
$array[] = $key;
}
別の例として、多くの配列の値に基づいて、長い文字列を構築する場合:私はそれがこの
$string = null;
$size = count($array);
for($i = 0; $i < $size; $i++) {
$string .= $array[$i]."del".$array_2[$i].",";
}
のように行われるべきであると言われてきた
$size = count($array);
for($i = 0; $i < $size; $i++) {
$string .= $array[$i]."del".$array_2[$i].",";
}
なぜこれらの両方のケースで、データを割り当てる前に変数を初期化することをお勧めしますか?そうでない場合、私は単に間違って聞いたことがあります。存在する場合、このルールには例外がありますか?
更新:これは、この関数で変数を初期化する適切な方法でしょうか?
function weight_index($keyword, $src, $alt, $content, $ratio='3:3:1') {
// Initialize needed variables
$content_index = ''; $src_index = ''; $alt_index = '';
// Create all four types of $keyword variations: -, _, %20, in order to search
// through $content, $alt, $src for instances.
$keyword_fmt = array('hyphen' => str_replace(' ', '-', $keyword), 'underscore' => str_replace(' ', '_', $keyword), 'encode' => urlencode($keyword), 'original' => $keyword);
// Define weight index for each instance within a searchable "haystack".
list($src_weight, $alt_weight, $content_weight) = explode(':', $ratio);
// Get the number of instances of $keyword in each haystack for all variations.
foreach($keyword_fmt as $key => $value) {
$content_index += substr_count($value, $content); // .. may generate an error as $x_index hasn't been initialized.
$src_index += substr_count($value, $src);
$alt_index += substr_count($value, $alt);
}
// Multiply each instance by the correct ratio.
$content_index = $content_index * $content_weight;
$src_index = $src_index * $src_weight;
$alt_index = $alt_index * $alt_weight;
// Total up all instances, giving a final $weight_index.
$weight_index = $content_index + $src_index + $alt_index;
return $weight_index;
}
それとも$content_index
、$src_index
と$alt_index
ような変数の前にglobal
キーワードを使用する方が賢明であり、必要となるすべての変数を含むことになり、すなわちinit_variables.php
を含まれることになる別のファイルにそれらを初期化しますこのポストの例のように、使用前に初期化する必要がありますか?
関数内でのみ使用される変数は、「グローバル」ではありません。 – Amber
ありがとうございます。私は例のように関数内でそれらを初期化します:) – Avicinnian