String替换数组PHP中的所有项

AJF*_*DIA 11 php string foreach replace str-replace

我想在数组中的所有项目中进行字符串替换.我有的是:

$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']); 
Run Code Online (Sandbox Code Playgroud)

如何用更少的代码实现这一目标?我认为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);
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

net*_*der 30

做就是了:

$row = str_replace("&", "&", $row);
Run Code Online (Sandbox Code Playgroud)

注意:您的foreach不起作用,因为您需要参考,或使用密钥:

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

要么:

foreach ($columns as $key => $value){
   $columns[$key]  = str_replace("&", "&", $value);
}
Run Code Online (Sandbox Code Playgroud)

虽然这里没有必要因为str_replace接受并返回数组.

  • 你明白了...我不知道 `str_replace` 也接受 `arrays` (3认同)