【问题标题】:How to display all items with key value name in PHP?如何在 PHP 中显示所有具有键值名称的项目?
【发布时间】:2020-07-29 05:36:21
【问题描述】:

我想使用表格形式的循环而不是 foreach 循环来显示以下带有 key-nameskey-values 的数组列表。 (已使用)

$marks = array(
    "Rahul" => array("Java" => "80", "Algorithms" => "72", "DBMS" => "88"),
    "Anita" => array("Java" => "90", "Algorithms" => "84", "DBMS" => "88"),
);

/**
 * I want to use *for loop* to display
 * all items with key(index values)and data items
 */
foreach ($marks as $new)
{
    echo $new['Java'] . " " . $new['Algorithms'] . " " . $new['DBMS'] . "\n";
} 

【问题讨论】:

  • 欢迎。只需check the manual on foreach
  • 所以你不知道如何访问RahulAnita? @IMP
  • 这需要多动态?您确切想要的输出是什么? @IMP 为什么你似乎对foreach() 循环有一些偏见——这部分对我来说没有意义?

标签: php arrays loops


【解决方案1】:

如果我理解正确的话,

foreach ($marks as $new => $n)
{ 

    echo $new." - Java : ".$n['Java'].", Algorithms : ".$n['Algorithms'].", DMBS: ".$n['DBMS']."\n <br>";  
} 

【讨论】:

    【解决方案2】:

    您的输入数组似乎具有可预测的结构。您可以使用单个 foreach() 访问第一级键以及完整的第二级数据,方法是将每个关联值分配给一个变量。

    代码:(Demo)

    $marks = [
        "Rahul" => ["Java" => "80", "Algorithms" => "72","DBMS" => "88"],
        "Anita" => ["Java" => "90", "Algorithms" => "84","DBMS" => "88"],
    ];
    
    foreach ($marks as $key => ['Java' => $java, 'Algorithms' => $algo, 'DBMS' => $dbms]) {
        echo "$key : Java => $java, Algorithms => $algo, DBMS => $dbms\n";
    }
    

    输出:

    Rahul : Java => 80, Algorithms => 72, DBMS => 88
    Anita : Java => 90, Algorithms => 84, DBMS => 88
    

    【讨论】:

      【解决方案3】:

      全部在for循环中

      <?php
      $marks = array (
      
          "Rahul" => array ("Java" => "80", "Algorithms" => "72","DBMS" => "88"),
      
          "Anita" => array ("Java" => "90", "Algorithms" => "84","DBMS" => "88"),
      );
      
      // Get all user names
      $arrayNames = array_keys($marks);
      $x = true;
      $sizeMarks = sizeof($marks);
      for($i=0; $i< $sizeMarks; $i++){
          
      
          $nameKey = $arrayNames[$i];
          $subsArray = $marks[$nameKey];
      
          if($x == true){
              $sizeSubjects = sizeof($subjects);
              $x = false;
          }
      
          $subjects = array_keys($subsArray);
          for($j=0; $j< $sizeSubjects; $j++){
      
              $subjectKey = $subjects[$j];
              echo $nameKey ." ".$subjects[$j]." ".  $marks[$nameKey][$subjectKey]."\n"; 
          }
      }
      ?>
      

      【讨论】:

      • 是的。我只是想用所有的for循环写一个答案。
      【解决方案4】:

      由于用户对 key 感兴趣,首先 foreach 获取 key ($ind) “Rahul”,然后在数组上循环并回显后续 key ($ind2) “Java”、“Algorithms”、“DBMS”及其值($val) ,键“Anita”也会发生同样的情况

       $marks = array(
              "Rahul" => array("Java" => "80", "Algorithms" => "72", "DBMS" => "88"),
              "Anita" => array("Java" => "90", "Algorithms" => "84", "DBMS" => "88"),
          );
          
          foreach ($marks as $ind => $new) {
              foreach ($new as $ind2 => $val) {
                  echo $ind . " " . $ind2 . '-' . $val . "\n";
              }
          }
      

      【讨论】:

      • 如果你解释一下你的答案会很有帮助
      • 解释了答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-10
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 2020-03-22
      • 1970-01-01
      相关资源
      最近更新 更多