【问题标题】:PHP Print array values in order which is in another arrayPHP按顺序打印另一个数组中的数组值
【发布时间】:2021-03-05 09:40:18
【问题描述】:

我有一个数组 ($fields_order_obj),其中包含我想在表格中打印的列表的名称和 orderindex。 在另一个数组 ($data) 中,我有我想要打印的所有值,但顺序与 $fields_order_obj 数组中的顺序不同。我使用 fetchmode ADODB_FETCH_ASSOC 查询从 SQL 中提取这个数组,然后像使用 foreach ($data as $row) {}

一样处理每一行
$fields_order_obj ([name] => Del_Month [size] => 10 [reportindex] => 0, [name] => Del_Date [size] => 10 [reportindex] => 1, [name] => Article [size] => 10 [reportindex] => 3, ect.)
$data [0]([name] => Article [value] => "A", [name] => Del_Date [value] => "03-03-21", [name] => Del_Month [value] => "March"),[1]([name] => Article [value] => "B", [name] => Del_Date [value] => "01-02-21", [name] => Del_Month [value] => "Feb"), ect.

到目前为止我所拥有的:

print "<table style=\"width:100%\">";
print " <tr>\n";
foreach ($fields_order_obj as $obj){
      print "<th>".$obj->name."</th>\n";
}
print " </tr>\n";
foreach ($data as $row) {
    print " <tr>\n";
    foreach ($row as $name => $value) {
        print "<td>".$value."</td>\n";
    }
}
print " </tr>\n";

显然数据没有按我想要的顺序打印,我需要检查并比较字段的name然后检查reportindex以正确的顺序打印,但我似乎没有能写出正确的代码...

【问题讨论】:

    标签: multidimensional-array associative-array


    【解决方案1】:

    这成功了:

    print "<table style=\"width:100%\">";
    print " <tr>\n";
    foreach ($fields_order_obj as $obj){
          print "<th>".$obj->name."</th>\n";
    }
    print " </tr>\n";
    foreach ($data as $row) {
        print " <tr>\n";
        foreach ($fields_order_obj as $obj){
            $fieldName = $obj->name;
            print "<td>".$row[$fieldName]."</td>\n";
        }
    }
    print " </tr>\n";
    

    【讨论】:

      【解决方案2】:

      我想你的代码应该是这样的:

      print "<table style=\"width:100%\">";
      print " <tr>\n";
      foreach ($fields_order_obj as $obj){
            print "<th>".$obj->name."</th>\n";
      }
      print " </tr>\n";
      foreach ($data as $row) {
          print " <tr>\n";
          foreach ($fields_order_obj as $obj){
              print "<td>".$row[$obj->name]."</td>\n";
          }
      }
      print " </tr>\n";
      

      您应该遍历您的字段数组以保持按预期顺序打印并通过字段名称获取行数据。请记住,如果您的数据没有在 $fields_order_obj 中指定的所有字段,您应该注意这种情况。

      【讨论】:

      • 似乎 $row->$fieldname 为空,因为它不打印任何内容,如果第一个 foreach 中有 => (foreach ($data as $row =>.... .)?
      • 你的数据结构不容易看懂……
      • 你指出了我正确的方向,Txs!
      猜你喜欢
      • 1970-01-01
      • 2012-09-02
      • 2021-10-20
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多