php - array_map -“传递的参数必须是数组类型,给定字符串”错误
问题描述
我不确定为什么以下不起作用。我收到上述错误(主题):
$array = array (); //something goes in here
function del_space(array $a){
foreach($a as $key => $value){
preg_replace("/; +/", "", $value);
}
}
$no_space = array_map("del_space", $array);
解决方案
您的函数del_space
将数组作为参数。array_map
获取数组(第二个参数)本身的每个元素,并将其发送到回调(第一个参数)。所以除非你有一个数组数组,否则这是行不通的。您的示例应如下所示:
$array = ['lblab; la'];
function del_space($a){
return preg_replace("/; +/", "", $a);
}
$no_space = array_map("del_space", $array);
print_r($no_space);
给出输出:
Array ( [0] => lblab;la)
如果要传递数组数组,则输入应如下所示:
$array = [
['blabla; bla'],
['blabla2; bla2'],
];
function del_space(array $a){
foreach($a as $key => $value){
$a[$key] = preg_replace("/; +/", "", $value);
}
return $a;
}
$no_space = array_map("del_space", $array);
print_r($no_space);
输出:
Array ( [0] => Array ( [0] => blablabla ) [1] => Array ( [0] => blabla2bla2 ) )
推荐阅读
- docker - 除非重新启动 Peer,否则 Hyperledger Composer 无法更新
- angular - 使用角度在剑道树视图中附加自定义节点
- java - 使用 ExoPlayer 2.8 播放播放列表中的特定文件
- react-native - redux-observable 您在预期流的地方提供了“未定义”
- android-things - 如何在 Android Things 控制台上注册和识别单个设备或我们如何让设备进入通道
- xamarin - Xamarin.iOS:如何更改工具栏中图像的大小
- java - 使用 Scanner 扫描另一个类中的预定义字符串列表,并将它们解析为 java 中的 Ints
- javascript - navigationOptions 没有在标题上显示我的按钮
- html - 如何避免内嵌图标跳转到移动设备的下一行?
- python - 嵌套循环跟踪