我正在使用Codeigniter及其验证规则 - 自定义回调验证。无论如何,我认为这似乎与CI无关。
我有这个函数返回一个字符串......
function array_implode($a)
{
return implode(',', $a);
}
...但我总是得到一条消息implode():传递的参数无效
但var_dump()
向我展示了这一点:
array(2) {
[0]=> string(10) "First item"
[1]=> string(11) "Second item"
}
有什么问题?
答案 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);
}