array_map 与 str_replace

发布于 2024-11-13 08:34:55 字数 179 浏览 3 评论 0原文

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

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

Is it possible to use array_map in conjunction with str_replace without calling another function to do the str_replace?

For example:
array_map(str_replace(' ', '-', XXXXX), $myArr);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

不再让梦枯萎 2024-11-20 08:34:55

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

There is no need for array_map. From the docs: "If subject is an array, then the search and replace is performed with every entry of subject, and the return value is an array as well."

软甜啾 2024-11-20 08:34:55

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

No, it's not possible. Though, if you are using PHP 5.3, you can do something like this:

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

Output:

Array
(
    [0] => foo xxx baz
)
划一舟意中人 2024-11-20 08:34:55

当然可以,您只需为回调函数提供 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);

Sure it's possible, you just have to give array_map() the correct input for the callback function.

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

But for the particular example in the question, as chiborg said, there is no need. str_replace() will happily work on an array of strings.

str_replace(' ', '-', $myArr);
明月松间行 2024-11-20 08:34:55

可能需要注意的是,如果 str_replace 中使用的数组是多维的,则 str_replace 将不起作用。

尽管这并不能直接回答使用 array_map 而不调用额外函数的问题,但此函数仍然可以用来代替 array_map< 中的 str_replace /code> 的第一个参数(如果您决定需要在多维数组上使用 array_map 和字符串替换)。它的行为与使用 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;
}

Might be important to note that if the array being used in str_replace is multi-dimensional, str_replace won't work.

Though this doesn't directly answer the question of using array_map w/out calling an extra function, this function may still be useful in place of str_replace in array_map's first parameter if deciding that you need to use array_map and string replacement on multi-dimensional arrays. It behaves the same as using 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;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文