【问题标题】:PHP echo array by value in loop or foreachPHP在循环或foreach中按值回显数组
【发布时间】:2017-03-13 00:00:59
【问题描述】:

我在一个表格中有一个技能和行业列表,该列表被提取到如下所示的多维数组中。表中有 300 多行:

$skills = 
    [0] => Array ([rowID] => 10000169 [industry] => Engineering and manufacturing [skill] => 3D Modelling)
    [1] => Array ([rowID] => 10000083 [industry] => Accountancy, banking and finance [skill] => AAT)
    [2] => Array ([rowID] => 10000079 [industry] => Accountancy, banking and finance [skill] => CT600)
    [3] => Array ([rowID] => 10000102 [industry] => Business, consulting and management [skill] => WIP)
    [4] => Array ([rowID] => 10000078 [industry] => Accountancy, banking and finance [skill] => ACCA)
    [5] => Array ([rowID] => 10000095 [industry] => Internet and technology [skill] => HTML)

...

我正在尝试用列表中的相关技能来呼应每个行业,如下所示:

会计、银行和金融
10000083, AAT
10000078, ACCA
10000079, CT600

商业、咨询和管理
10000102,在制品

工程与制造
10000169, 3D建模

互联网和技术
10000095,HTML

目前我正在使用 foreach,因此每次列出一个,但我真的想将它们组合在一起。我查看了 array_filter 并使用了一个键,但无法得到我想要的。是否可以从我拥有的数组中执行此操作?

【问题讨论】:

  • 你为什么不通过industry而不是id订购?
  • 为什么这里有一个
    元素?这似乎不是一个正确的数组构造。你确定这行得通吗?

标签: php arrays foreach


【解决方案1】:

按行业排序数据然后循环(如果与前一个不同,则回显标题):

   function cmp($a, $b)
    {
        return strcmp($a["industry"], $b["industry"]);
    }

    usort($skills, "cmp");
    $lastSkill = "";
    foreach($skills as $skill) {
     if ($skill["industry"] !== $lastSkill ) {
      echo "<h1>" . $skill["industry"] . "</h1>";
      $lastSkill = $skill["industry"];
     }
     echo "<br> - " . $skill["skill"] ;
    }

(您也可以在 SQL 查询中添加“order by industry”)

【讨论】:

  • 谢谢,这完全符合我的要求 :) 我将选择语句更改为按行业排序,然后通过技能将您的代码更改为:$lastskill = ''; foreach($skills as $skill) { if ($skill['industry'] !== $lastSkill ) { echo '

    '.$skill['industry'].'

    '; $lastSkill = $skill["行业"]; } echo '
    '.$skill['skill']; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 2021-01-22
  • 2016-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多