una substr_replace str_replace special remove preg_replace parte eliminar characters cadena array php str-replace array-map

substr_replace - substr php



array_map con str_replace (4)

¿Es posible usar array_map junto con str_replace sin llamar a otra función para hacer str_replace ?

Por ejemplo:
array_map(str_replace('' '', ''-'', XXXXX), $myArr);


Claro que es posible, solo tienes que dar a array_map() la entrada correcta para la función de devolución de llamada.

array_map( ''str_replace'', // callback function (str_replace) array_fill(0, $num, '' ''), // first argument ($search) array_fill(0, $num, ''-''), // second argument ($replace) $myArr // third argument ($subject) );

Pero para el ejemplo particular en la pregunta, como dijo chiborg , no hay necesidad. str_replace() trabajará felizmente en una serie de cadenas.

str_replace('' '', ''-'', $myArr);


No hay necesidad de array_map. De la docs : "Si el asunto es una matriz, entonces la búsqueda y reemplazo se realiza con cada entrada de asunto, y el valor de retorno es también una matriz".


No, no es posible. Sin embargo, si está utilizando PHP 5.3, puede hacer algo como esto:

$data = array(''foo bar baz''); $data = array_map(function($value) { return str_replace(''bar'', ''xxx'', $value); }, $data); print_r($data);

Salida:

Array ( [0] => foo xxx baz )


Podría ser importante tener en cuenta que si la matriz que se usa en str_replace es multidimensional, str_replace no funcionará.

Aunque esto no responde directamente a la pregunta de usar array_map sin llamar a una función adicional, esta función puede ser útil en lugar de ''str_replace'' en el primer parámetro de array_map si decide que necesita usar array_map y el reemplazo de cadenas en varios. matrices dimensionales. Se comporta de la misma manera que usando str_replace:

function md_str_replace($find, $replace, $array) { /* Same result as using str_replace on an array, but does so recursively for multi-dimensional arrays */ if (!is_array($array)) { /* Used ireplace so that searches can be case insensitive */ return str_ireplace($find, $replace, $array); } $newArray = array(); foreach ($array as $key => $value) { $newArray[$key] = md_str_replace($find, $replace, $value); } return $newArray; }