11

配列内のすべての項目で文字列を置換したいと考えています。私が持っているものは次のとおりです。

$row['c1'] = str_replace("&", "&", $row['c1']);
$row['c2'] = str_replace("&", "&", $row['c2']);
$row['c3'] = str_replace("&", "&", $row['c3']);
$row['c4'] = str_replace("&", "&", $row['c4']);   
$row['c5'] = str_replace("&", "&", $row['c5']);
$row['c6'] = str_replace("&", "&", $row['c6']);
$row['c7'] = str_replace("&", "&", $row['c7']);   
$row['c8'] = str_replace("&", "&", $row['c8']);
$row['c9'] = str_replace("&", "&", $row['c9']);
$row['c10'] = str_replace("&", "&", $row['c10']); 

より少ないコードでこれを達成するにはどうすればよいですか? foreach ステートメントが機能すると思いました。たとえば、次のようになります。

$columns = array($row['c1'], $row['c2'], $row['c3'], $row['c4'], $row['c5'], $row['c6'], $row['c7'], $row['c8'], $row['c9'], $row['c10']);

foreach ( $columns as $value){
   $value   = str_replace("&", "&", $value);
}

しかし、うまくいきません。

4

3 に答える 3

31

ただ行う:

$row = str_replace("&", "&", $row);

注:参照が必要なため、またはキーを使用するため、foreach は機能しません。

foreach ( $columns as &$value) { // reference
   $value  = str_replace("&", "&", $value);
}
unset($value); // break the reference with the last element

または:

foreach ($columns as $key => $value){
   $columns[$key]  = str_replace("&", "&", $value);
}

str_replace配列を受け入れて返すため、ここでは必要ありませんが。

于 2011-02-18T18:25:58.980 に答える
2

参照によって呼び出す必要があります。そうしないforeachと、の複製コピーが作成されます$value

foreach ( $columns as &$value)

于 2011-02-18T18:26:53.967 に答える