【问题标题】:Using implode instead of var_dump doesn't give the intended output使用 implode 而不是 var_dump 不会给出预期的输出
【发布时间】:2015-04-10 09:45:34
【问题描述】:

所以我有一个我一直在使用的 PDO 的 php 脚本,虽然不大,但给我带来麻烦的是:

while ($row = $try->fetchAll(PDO::FETCH_ASSOC)) {
            var_dump($row);

这会以预期的方式输出数据:`

array(5) {
  [0]=>
  array(2) {
    ["DataID"]=>
    string(1) "1"
    ["Description"]=>
    string(3) "!!!"
  }
  [1]=>
  array(2) {
    ["DataID"]=>
    string(1) "2"
    ["Description"]=>
    string(18) "This is document 2"
  }

但是当我将最后一行更改为:

echo implode(" - ", $row);

它输出:

Array
Array

我可以知道为什么会出现这种情况以及如何解决这个问题吗?谢谢!

【问题讨论】:

  • 仔细看,你有一个多维数组!表示 -> foreach($row as $arr) echo implode("-", $arr);
  • 您正在将数组转换为字符串,这就是原因。
  • 感谢您的回复!现在内爆确实起作用了,但是它似乎没有考虑换行符或引号中的任何内容,如下所示: echo implode("\n", $arr);并在一行中打印出来

标签: php arrays output implode


【解决方案1】:

您同时获取所有行,因此您的 while 语句代码对所有行执行一次:

while ($row = $try->fetchAll(PDO::FETCH_ASSOC)) {
            var_dump($row);

这就是为什么您的 var_dump 会打印所有内容(但只打印一次!)。

当你内爆时,你只是在内爆一个数组。

如果您逐行进行提取:

while ($row = $try->fetch(PDO::FETCH_ASSOC)) {
            var_dump($row);

您将作为数组打印为您拥有的行,并且您的 implode 将按预期成功

【讨论】:

  • 啊,谢谢伙计,这很有道理。我唯一的问题是现在内爆确实有效,但是它似乎没有考虑换行符或引号中的任何内容,如下所示: while ($row = $try->fetch(PDO::FETCH_ASSOC)) { echo implode ("\n", $row);
  • 这取决于,如果您正在从浏览器读取输出,您可能需要一个 html 标签:
  • 我试过 , \n,
     但它们似乎都以相同的方式输出(在一行中)。 :x
  • 但是如果你放一个点'.'全部由点连接还是从不连接你放的任何东西?另外,我想看看那个输出,如果可能的话,我想比较一个 var_dump 输出
  • var_dump: array(1) { ["firstname"]=> string(4) "jake" } array(1) { ["firstname"]=> string(6) "steven" }
【解决方案2】:

会有array_column函数是PHP 5.5,你就可以这样做

 $myHiddenField = implode(',', array_column($yourMainArray, 'code'));

 For now you have to use your own loop

  $values = array();
  foreach ($yourMainArray as $address)
  {
   $values[] = $address['code'];
  }
  $myHiddenField = implode(',', $values);

请通过两个链接

Multidimensional Array Implode

Implode data from a multi-dimensional array

【讨论】:

  • OP 的代码中没有名为:code 的列?! OP 似乎想要所有列
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-20
  • 2016-10-05
  • 2017-11-27
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多