【问题标题】:Printing an array in php在php中打印一个数组
【发布时间】:2012-07-12 01:44:12
【问题描述】:

现在我知道你不能只使用 echo 来打印数组的内容,你必须使用 foreach 但由于某种原因这不起作用。有什么想法吗?

$rows = $stmt->fetchAll();
foreach ($rows as $key=>$row)
       {
        echo "My value at $key is $row";
       }
}

输出:

My value at 0 is ArrayMy value at 1 is ArrayMy value at 2 is Array

【问题讨论】:

  • 你的$row是另一个数组,所以你有一个多维数组,你必须做另一个foreach()
  • var_dump 有什么问题?
  • 如果你像 Harnish 所说的那样转储了你的数组,那么你就会知道它是一个二维数组。

标签: php arrays printing


【解决方案1】:

您似乎使用 fetchAll 从 PDO 获取了一些内容。

此方法返回一个数组(行)数组。内部数组有column_name => value 元素。例如,如果您检索到列“firstName”和“lastName”,则第一条记录的这些值将分别为$rows[0]['firstName']$rows[0]['lastName']

正确的做法是:

$rows = $stmt->fetchAll();
foreach ($rows as $key => $row) {
    foreach ($row as $column => $value) {
        echo "My $column value for row $key is $value\n";
    }
}

Protip:注意括号对齐,这对正确性无关紧要,但会使代码更具可读性:)

【讨论】:

  • 谢谢先生。我认为它会更类似于 python。
【解决方案2】:

对我来说看起来像是一个多维数组。试试var_dumpprint_r

var_dump($rows);
print_r($rows);

【讨论】:

    【解决方案3】:

    $row 是另一个不能直接转换为字符串的数组。您可以使用此功能检查数组内容。

    function d($data)
    {
        echo '<pre>';
        print_r($data);
        echo '</pre>';
    }
    d($stmt->fetchAll());
    

    最好你这样做(如果你忘记删除它的调用不会损害你的网站)

    define('ENVIRONMENT', 'development');
    function d($data)
    {
        if(ENVIRONMENT == 'development')
        {
        echo '<pre>';
        print_r($data);
        echo '</pre>';
        }
    }
    d($stmt->fetchAll());
    

    【讨论】:

      【解决方案4】:

      试试这个调试$row的内容:

      $rows = $stmt->fetchAll();
      
      foreach ($rows as $key=>$row)
      {
          echo "First key: $key | ";
      
          foreach($row as $subkey => $subrow)
          {
              echo "Subkey: $subkey | Value: $subrow <br />";
          }
      
      }
      

      此外,使用var_dump()print_r()var_export() 之类的函数很重要,它们会为您避免很多问题。

      【讨论】:

        【解决方案5】:
        //<pre> tag will give you a well formatted version of var_dump  
        echo "<pre>"; 
        var_dump($rows);
        echo "</pre>";
        

        【讨论】:

          【解决方案6】:
          //@parram $data-array,$d-if true then die by default it is false
           //@author Your name
          
           function p($data,$d = false){
          
               echo "<pre>"; 
                   print_r($data);
               echo "</pre>"; 
          
               if($d == TRUE){
                  die();
               } 
          } // END OF FUNCTION
          

          每当您需要字符串或数组时都使用此函数,它会非常好用。 有2个参数 1.$data - 可以是数组或字符串 2.$d - 默认情况下它是 FALSE 但如果你设置为 true 那么它将执行 die() 函数

          在你的情况下,你可以这样写..

          $rows = $stmt->fetchAll();
          
          foreach ($rows as $key=>$row) {
                p($rows);  // to use p function use above code for p() in your code   
          }
          

          【讨论】:

            猜你喜欢
            • 2015-07-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-11-20
            • 1970-01-01
            • 2010-11-25
            • 1970-01-01
            相关资源
            最近更新 更多