使用implode而不是var_dump并不能给出预期的输出

时间:2015-04-10 09:45:35

标签: php arrays output implode

所以我有一个我一直在使用的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

我可以知道为什么会这样,我将如何解决这个问题?谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

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

在爆炸的同时,你只会爆炸一个阵列。

如果你逐行获取:

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

您将按照您拥有的行打印为数组,并且您的内爆将按预期成功

答案 1 :(得分:0)

将有一个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