String substitui todos os itens na matriz PHP

Gostaria de fazer uma substituição de string em todos os itens em uma matriz. O que eu tenho é:

$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']); 

Como posso conseguir isso com menos código? Eu pensei que uma declaração foreach funcionaria, por exemplo:

 $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); } 

Mas não funciona.

Apenas faça:

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

Nota: Seu foreach não funciona porque você precisa de uma referência ou use a chave:

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

Ou:

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

Embora não seja necessário aqui porque str_replace aceita e retorna arrays.

Você deve chamá-lo por referência, caso contrário cria uma cópia duplicada de $value de $value

foreach ( $columns as &$value)

Outra solução é usar o array_walk PHP como este:

 function custom_replace( &$item, $key ) { $item = str_replace('22', '75', $item); } // Init dummy array. $columns = array('Cabbage22', 'Frid22ay', 'Internet', 'Place22', '22Salary', '22Stretch', 'Whale22Inn'); // Print BEFORE. echo 'Before: '; print_r($columns); // Make the replacements. array_walk($columns, 'custom_replace'); // Print AFTER. echo 'After:'; print_r($columns); 

Saída:

 Before: Array ( [0] => Cabbage22 [1] => Frid22ay [2] => Internet [3] => Place22 [4] => 22Salary [5] => 22Stretch [6] => Whale22Inn ) After: Array ( [0] => Cabbage75 [1] => Frid75ay [2] => Internet [3] => Place75 [4] => 75Salary [5] => 75Stretch [6] => Whale75Inn )