【问题标题】:array_map - "Argument passed must be of the type array, string given" errorarray_map -“传递的参数必须是数组类型,给定字符串”错误
【发布时间】:2018-06-13 17:15:41
【问题描述】:

我不确定为什么以下内容不起作用。我收到上述错误(主题):

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

【问题讨论】:

  • 哪一行?该错误似乎不言自明。
  • 我给它传递了一个数组,它给我的信息是这是一个字符串。我用代码上方的一行 is_array() 检查了这一点。这是一个缩短的版本。这取自我在 IDE 中编写的内容。
  • 数组为空?
  • eval.in/1020730 - 看看吧。
  • 如果你正在寻找数组中的空白,只需使用内置函数 trim();

标签: php arrays callback array-map


【解决方案1】:

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

【讨论】:

  • 知道了,谢谢!这是我写代码的第一天,但​​是在理论教育 11 个月之后。谢谢!多长时间才能好转/感觉进步,如果我可以问的话?
  • 不客气,我很高兴你能成功。很难说,我觉得用 PHP 学习基础比较容易,但是每天都有东西要学 :) php.net 是一个很好的起点,每个函数都有详细的描述和很多例子。跨度>
【解决方案2】:

听起来你有:

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

但你需要类似的东西:

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

如果你想使用array_map()

【讨论】:

  • 查看 eval.in 网址。它是一个数组,它不起作用。
  • @gs3 我有个会议,我稍后再查看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 2018-03-22
  • 1970-01-01
相关资源
最近更新 更多