valor una str_replace special parte multidimensional index eliminar elementos ejemplos characters cadena buscar array agregar php string replace foreach str-replace

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 )