首页 > 解决方案 > 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); 

标签: phparrayscallbackarray-map

解决方案


您的函数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 ) )

推荐阅读