使用array_map实现多个函数

10

array_map函数接受字符串作为它的第一个参数。是否有一种方法可以使用数组而不是字符串,例如:

.... array_map( array('trim','urlencode'), $my_array);

因此,我可以附加多个功能。


1
"array_map接受字符串" -- array_map()的第一个参数是可调用对象。在PHP中有6种类型的可调用对象(请参见文档中的示例),您可以轻松找到与您的项目和编码风格相匹配的对象。 - axiac
1
一种方法可能是:return array_map('trim', array_map('urlencode', $targets)); - tlorens
2个回答

21
您可以定义一个函数来结合这些trimurlencode函数。然后使用新函数名称或新函数作为array_map()函数的第一个参数。
array_map(function($v){
  $v = trim($v);
  $v = urlencode($v);
  return $v
}, $array);

对于那些不太熟悉PHP但想要学习的人来说。 $v 现在是指针,// trim() call // ur.... 意味着 $v = trim($v); $v = urlencode($v); return $v; - Jonas Lundman
1
应该是 return $v; - Q Studio

2
您也可以这样做。参考:create_function() 警告:自PHP 7.2.0起,此函数已被弃用。强烈不建议使用此函数。 在此处尝试此代码片段
$newfunc = create_function('$value', 'return urlencode(trim($value));');
$array=array_map($newfunc, $array);

1
警告:自 PHP 7.2.0 起,create_function 已被弃用。依赖此函数是极不鼓励的(来自您链接指向的文档) :-) - 3000
$newfunc = function($value) { return urlencode(trim($value)); }; 新函数 = function($value) { return urlencode(trim($value)); }; - Alper AKPINAR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接