我使用的是Codeigniter及其验证规则--一个自定义的回调验证。无论如何,我认为这似乎与CI无关。
我使用此函数返回一个字符串…
function array_implode($a)
{
return implode(',', $a);
}…但是我总是收到一条消息implode():传递了无效的参数
但是var_dump()向我展示了这个:
array(2) {
[0]=> string(10) "First item"
[1]=> string(11) "Second item"
}怎么啦?
发布于 2013-05-13 16:33:32
为什么?为什么要写一个调用std函数的函数呢?为什么不写implode(',', $array);而不是增加函数调用的开销呢?
还有:什么var_dump输出了一个数组?它是array_implode函数中的$a转储吗?为了确保$a始终是一个数组,并且您坚持保留array_implode函数,请将代码编辑为如下所示:
function array_implode(array $a)
{//type hinting: this function will only work if $a is an array
return implode(',',$a);
}发布于 2013-05-13 16:41:12
代码不应该抛出任何错误。可能有什么隐藏的东西。使用此函数找出错误:
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);
}发布于 2013-05-13 16:50:35
您可以将$a转换为数组,以确保在使用implode时始终使用数组
function array_implode($a) {
return implode(',', (array) $a);
}https://stackoverflow.com/questions/16517714
复制相似问题