可以在不调用另一个函数的情况下,将array_map
与str_replace
结合使用吗?
例如:
array_map(str_replace(' ', '-', XXXXX), $myArr);
可以在不调用另一个函数的情况下,将array_map
与str_replace
结合使用吗?
例如:
array_map(str_replace(' ', '-', XXXXX), $myArr);
不,这是不可能的。但是,如果你使用的是 PHP 5.3,你可以像这样做:
$data = array('foo bar baz');
$data = array_map(function($value) { return str_replace('bar', 'xxx', $value); }, $data);
print_r($data);
输出:
Array
(
[0] => foo xxx baz
)
array_map()
函数正确的回调函数输入即可。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)
);
但对于问题中的特定示例,正如chiborg所说,没有必要。 str_replace()
可以轻松地处理字符串数组。
str_replace(' ', '-', $myArr);
需要注意的是,如果在str_replace
中使用的数组是多维的,则str_replace
将无法正常工作。
虽然这并没有直接回答如何在不调用额外函数的情况下使用array_map
的问题,但如果决定需要在多维数组上使用array_map
和字符串替换,则此函数仍然可以代替array_map
的第一个参数中的str_replace
。它的行为与使用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;
}
str_replace()
映射到一个数组,还是将替换结果作为函数名映射到数组中? - BoltClock