【问题标题】:php access data array with foreachphp使用foreach访问数据数组
【发布时间】:2015-04-12 12:12:12
【问题描述】:

我有一个由提交表单填写的数据库表。

该表由 ID、usr_ID、名称等组成。 我正在使用 wordpress 制作自定义表格列表,而且……我不是最擅长 foreach。

我将如何循环遍历并且只显示每个名称和 usr_id 一次

示例:

row 1:
id = 1, usr_id = 5, name = Alexander
row 2;
id = 2, usr_id = 4, name = james
row 3;
id = 3, usr_id = 5, name = Alexander
row 4
id = 4, usr_id = 4, name = james

我将如何制作一个可以打印出来的 foreach 语句:

usr_id = 5, name = Alexander
usr_id = 4, name = james

这样做的目的是让每个名称都可点击,然后只为单击的特定 usr_id 做一个 foreach 语句,以查看每个用户提交的内容

【问题讨论】:

  • 您的查询是什么?是数组输出还是对象输出?
  • 进行distinct查询而不是获取所有行

标签: php wordpress foreach


【解决方案1】:

我将如何制作一个可以打印出来的 foreach 语句:

您可以将其用于数组输出:

foreach ($query as $v) {
    echo "usr_id = ".$v['usr_id']." , name = ".$v['name'];
}

您也可以对数组输出执行此操作:

foreach ($query as $key => $list){
    echo $list['someindex'];
}

但我不知道你是否想要那样......

有关foreach 的完整文档,请阅读this... :)

【讨论】:

    【解决方案2】:

    假设您有 $array 包含您的数据。如果$array 是关联数组:

    foreach($array as $a)
    {
        echo "usr_id = " . $a['usr_id'] . "- name = ". $a['name'];
    }
    

    如果$array 是一个索引数组:

    foreach($array as $a)
    {
        echo "usr_id = " . $a[1] . "- name = ".$a[2];
    }
    

    【讨论】:

      【解决方案3】:
      $dbhost = 'localhost'; $dbuser = 'DB USER'; $dbpass = 'DB USER PASSWORD'; $dbname = 'DB NAME';  
          $db = new PDO('mysql:host='.$dbhost.'; dbname='.$dbname, $dbuser, $dbpass, array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ));
      
          foreach($db->query('SELECT id, usr_id, name FROM THE-TABLE WHERE id>=1') as $row) {
              $id = $row['id']; 
              $usr_id = $row['usr_id']; 
              $name = $row['name'];
      
              // DO WHATEVER HERE 
      
          }
      

      或者您表示该表有很多列...使用通配符

      $dbhost = 'localhost'; $dbuser = 'DB USER'; $dbpass = 'DB USER PASSWORD'; $dbname = 'DB NAME';  
              $db = new PDO('mysql:host='.$dbhost.'; dbname='.$dbname, $dbuser, $dbpass, array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ));
      
              foreach($db->query('SELECT * FROM THE-TABLE WHERE id>=1') as $row) {
                  $id = $row['id']; 
                  $usr_id = $row['usr_id']; 
                  $name = $row['name'];
      
                  # the rest of the columns
      
                  // DO WHATEVER HERE 
      
              }
      

      【讨论】:

      • 我想我对我的问题有点不清楚,使用 usr_id 5 的 Alexander 可能已经使用了 20 次提交表单,而使用 usr_id 4 的 james 可能已经使用了 90 次我将如何处理为每个人打印 1 次,目的是使每个名称都可点击,然后列出 1 个人提交的所有内容
      【解决方案4】:

      只是为了简化使用

      $name_arr=array();
      foreach ($query as $v) 
      {
       if(in_array($v['name'],$name_arr)==false)
         {
          $name_arr[]=$v['name'];
          echo "usr_id = ".$v['usr_id']." , name = ".$v['name'];
         }
      }
      

      这样每个名字只有一个

      【讨论】:

        猜你喜欢
        • 2013-06-11
        • 1970-01-01
        • 2017-04-21
        • 2021-08-23
        • 1970-01-01
        • 2018-06-06
        • 2023-03-22
        • 2011-08-08
        • 1970-01-01
        相关资源
        最近更新 更多