Php 数组“U映射-”;传递的参数必须是数组类型,字符串为“给定”;错误

Php 数组“U映射-”;传递的参数必须是数组类型,字符串为“给定”;错误,php,arrays,callback,array-map,Php,Arrays,Callback,Array Map,我不知道为什么下面的方法不起作用。我得到了上述错误(主题): array\u map()为您循环$array,因此我假设$array中的每个项目都不是数组对象,但del\u space()需要向其传递数组 听起来你有: $array = array( 'some item' ); // Fails 但你需要这样的东西: $array = array( array( 'some item' ) ); // Success 如果希望使用array\u map()函数del\u space将数组作

我不知道为什么下面的方法不起作用。我得到了上述错误(主题):

array\u map()
为您循环
$array
,因此我假设
$array
中的每个项目都不是数组对象,但
del\u space()
需要向其传递数组

听起来你有:

$array = array( 'some item' ); // Fails
但你需要这样的东西:

$array = array( array( 'some item' ) ); // Success

如果希望使用
array\u map()

函数
del\u space
将数组作为参数
array\u map
获取数组的每个元素(第二个参数)本身,并将其发送到回调(第一个参数)。所以,除非你有一个数组,否则这是行不通的。您的示例应该如下所示:

$array = ['lblab; la'];

function del_space($a){
    return preg_replace("/; +/", "", $a); 
}

$no_space = array_map("del_space", $array);
print_r($no_space);
$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] => lblab;la)
如果要传递数组数组,则输入应如下所示:

$array = ['lblab; la'];

function del_space($a){
    return preg_replace("/; +/", "", $a); 
}

$no_space = array_map("del_space", $array);
print_r($no_space);
$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 ) )

什么线路?这个错误似乎是不言自明的。我给它传递了一个数组,它告诉我这是一个字符串。我用代码上方一行的is_array()检查。这是一个简短的版本。这是我在IDE中编写的内容。数组为空如果你在数组中查找nospace,只需使用内置函数trim();查看eval.in url。这是一个数组,不起作用。@gs3我有个会议,我稍后再查。收到了,谢谢!这是我写代码的第一天,但经过了11个月的理论教育。谢谢如果我能问的话,多长时间能好转/感觉到进步?不客气,我很高兴你能成功。很难说,我认为使用PHP学习基础知识相对容易,但每天都有一些东西需要学习:)PHP.net是一个很好的起点,每个函数都有详细的描述,并有许多示例。