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