PHP:implode()传递的参数无效

时间:2013-05-13 08:28:47

标签: php arrays implode

我正在使用Codeigniter及其验证规则 - 自定义回调验证。无论如何,我认为这似乎与CI无关。

我有这个函数返回一个字符串......

function array_implode($a)
{
  return implode(',', $a);
}

...但我总是得到一条消息implode():传递的参数无效

var_dump()向我展示了这一点:

array(2) {
  [0]=> string(10) "First item"
  [1]=> string(11) "Second item"
}

有什么问题?

3 个答案:

答案 0 :(得分:6)

为什么呢?你为什么要编写一个调用std函数的函数?为什么不写implode(',', $array);而不是添加函数调用的开销?

另外:var_dump放出一个数组?它是$a函数内的array_implode转储吗?为了确保$a始终是一个数组,并且坚持保留array_implode函数,请编辑代码如下:

function array_implode(array $a)
{//type hinting: this function will only work if $a is an array
    return implode(',',$a);
}

答案 1 :(得分:4)

代码不应该抛出任何错误。可能隐藏着一些东西。使用此功能找出错误:

function array_implode($a)
{
  // print detailed info if $a is not array
  if(!is_array($a)) {
    var_dump($a); // what is in $a
    var_dump(debug_backtrace()); // where exactly was it called?
    exit;
  }
  return implode(',', $a);
}

答案 2 :(得分:0)

您可以将$a转换为数组,以确保在使用implode时始终使用数组

function array_implode($a) {
    return implode(',', (array) $a);
}