【问题标题】:Why is the PHP function "implode" returning the string "array"?为什么 PHP 函数“内爆”返回字符串“数组”?
【发布时间】:2016-06-05 15:28:21
【问题描述】:

我正在调用以下函数:

function buildInStmt($array)
{
    if (is_array($array)) {
        $in = implode(',', $array);
    } else $in = "'" . $array . "'";
    var_dump("in=" . $in); 
    var_dump("$array=" . $array); 
    return $in;
}

...

    if (!isset($_REQUEST["form-type"]) || empty($_REQUEST["form-type"])) {
        throw new Exception('You must select a form type.');       
    }
    $forms = buildInStmt(array($_REQUEST["form-type"]));

函数的 var_dumps 正在返回:

字符串'in=Array'(长度=8)

字符串“数组=数组”(长度=11)

字符串'in=Array'(长度=8)

字符串“数组=数组”(长度=11)

字符串'in=1'(长度=4)

字符串“数组=数组”(长度=11)

var_dump(array($_REQUEST["form-type"]));从调用返回:

数组(大小=1) 0 => 数组(大小=2) 0 => 字符串“4”(长度=1) 1 => 字符串“7”(长度=1)

为什么 implode 不返回逗号分隔的字符串?

如果您选择否决这个问题,请解释原因,以便我从错误中吸取教训。

【问题讨论】:

  • 因为你有一个数组数组,或者看起来是这样。
  • 谢谢,弗朗西斯科。我正在从 ajax 传递一个数组。现在可以使用了。
  • 完美,很高兴知道它:)

标签: php arrays


【解决方案1】:
array (size=1) 0 => array (size=2) 0 => string '4' (length=1) 1 => string '7' (length=1)

大致相当于

$var = [
  0 => [
    0 => '4',
    1 => '8'
  ]
]

所以看起来你有一个数组数组。尽量不要从代码中添加不需要的数组:

buildInStmt($_REQUEST["form-type"])

【讨论】:

    猜你喜欢
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 2010-12-23
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多