una - Cadena reemplazar todos los elementos en la matriz PHP
php replace special characters (3)
Me gustaría hacer un reemplazo de cadena en todos los elementos de una matriz. Lo que tengo es:
$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'']);
¿Cómo puedo lograr esto con menos código? Pensé que una declaración de Foreach funcionaría, por ejemplo:
$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);
}
Pero no funciona.
Solo haz:
$row = str_replace("&", "&", $row);
Nota: su foreach no funciona porque necesita una referencia, o use la tecla:
foreach ( $columns as &$value) { // reference
$value = str_replace("&", "&", $value);
}
unset($value); // break the reference with the last element
O:
foreach ($columns as $key => $value){
$columns[$key] = str_replace("&", "&", $value);
}
Aunque no es necesario aquí porque str_replace
acepta y devuelve matrices.
Debe llamarlo por referencia, de lo contrario foreach
crea una copia duplicada de $value
foreach ( $columns as &$value)
Otra solución es usar PHP array_walk
siguiente manera:
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);
Salida:
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
)