带有str_replace的array_map

问题描述 投票:23回答:4

是否可以将array_mapstr_replace结合使用而无需调用另一个函数来执行str_replace

例如:array_map(str_replace(' ', '-', XXXXX), $myArr);

php str-replace array-map
4个回答
58
投票

不需要array_map。在docs中:“如果subject是一个数组,则对subject的每个条目执行搜索和替换,并且返回值也是一个array。”


12
投票

不,不可能。不过,如果您使用的是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
)

6
投票

当然,您只需要为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)
);

但是对于问题中的特定示例,正如[C​​0]所说,没有必要。 chiborg会很高兴地处理字符串数组。

str_replace()

1
投票

可能要注意,如果str_replace(' ', '-', $myArr); 中使用的数组是多维的,则str_replace将不起作用。

尽管这不能直接回答不使用附加功能而使用str_replace的问题,但是如果确定您需要在多维数组上使用array_map和字符串替换。它的行为与使用str_replace

相同
array_map
© www.soinside.com 2019 - 2024. All rights reserved.