PHP如何在哈希数组中定位特定键并输出不同的HTML?

时间:2018-06-16 17:07:14

标签: php html arrays

我在PHP中有一个哈希数组,需要迭代它并提取细节,但也要针对特定​​的键并以不同的方式使用该信息。

我要做的是在浏览器中显示每个用户的信息,但我希望IconColour不显示在屏幕上,而是构建一个图标,颜色取决于该值。

我正在构建数组:

$results_array [] = array("Name"=>$fullname, "telephone"=>$telephone, "updated"=>$lastupdated, "LRNumber"=>$tacticalcallsign, "IconColour"=>$iconcolour);

要将此信息提取出来并显示在我正在使用的浏览器中:

foreach($results_array as $row => $value){
 echo "\t<div class=\"responder-info-parent\">\n";   
    foreach($value as $row2 => $value2) {
        echo "\t\t<div class=\"responder-info\">" . $value2 . "</div>\n";
}
echo "\t</div>\n";
}

给了我:

<div class="responder-info-parent">
    <div class="responder-info">Firstname Lastname</div>
    <div class="responder-info">01234567896</div>
    <div class="responder-info">1 hours ago</div>
    <div class="responder-info">LR066</div>
    <div class="responder-info">amber</div>
</div><!-- close parent-->

我希望显示一个琥珀色图标而不是琥珀色。

例如:

<div class="responder-info-parent">
        <div class="responder-info">First Name</div>
        <div class="responder-info">123456789</div>
        <div class="responder-info">1 hours ago</div>
        <div class="responder-info">LR066</div>
        <div class="responder-info"><img src="/images/amber-icon.png"></div>
    </div><!-- close parent-->

因此。我的理解是我需要测试一个特定的键(IconColour),如果匹配,那么从其他键输出不同的html。

这就是我陷入困境的地方。我知道我需要做什么并且已经搜索了针对哈希数组中的特定键,但我还没有找到解决方案。虽然我知道,只要我发布这个(并投票通过),我会立即得到答案; - )

完整性。这是我的$ results_array

的var_dump

感谢您的帮助。

array(7) {
  [0]=>
  array(5) {
    ["Name"]=>
    string(15) "First Name"
    ["telephone"]=>
    string(11) "123456789"
    ["updated"]=>
    string(11) "1 hours ago"
    ["LRNumber"]=>
    string(5) "LR066"
    ["IconColour"]=>
    string(5) "amber"
  }
  [1]=>
  array(5) {
    ["Name"]=>
    string(12) "First Name"
    ["telephone"]=>
    string(11) "01234568796"
    ["updated"]=>
    string(11) "4 hours ago"
    ["LRNumber"]=>
    string(5) "LR011"
    ["IconColour"]=>
    string(5) "amber"
  }
  [2]=>
  array(5) {
    ["Name"]=>
    string(19) "First Name"
    ["telephone"]=>
    string(11) "01234568796"
    ["updated"]=>
    string(10) "1 days ago"
    ["LRNumber"]=>
    string(5) "LR005"
    ["IconColour"]=>
    string(4) "grey"
  }
  [3]=>
  array(5) {
    ["Name"]=>
    string(8) "First Name"
    ["telephone"]=>
    string(5) "LR076"
    ["updated"]=>
    string(11) "80 days ago"
    ["LRNumber"]=>
    string(11) "01234568796"
    ["IconColour"]=>
    string(4) "grey"
  }
  [4]=>
  array(5) {
    ["Name"]=>
    string(14) "First Name"
    ["telephone"]=>
    string(11) "01234568796"
    ["updated"]=>
    string(11) "1 hours ago"
    ["LRNumber"]=>
    string(5) "LR036"
    ["IconColour"]=>
    string(5) "amber"
  }
  [5]=>
  array(5) {
    ["Name"]=>
    string(11) "First Name"
    ["telephone"]=>
    string(11) "01234568796"
    ["updated"]=>
    string(13) "0 minutes ago"
    ["LRNumber"]=>
    string(5) "LR002"
    ["IconColour"]=>
    string(5) "green"
  }
  [6]=>
  array(5) {
    ["Name"]=>
    string(13) "First Name"
    ["telephone"]=>
    string(11) "01234568796"
    ["updated"]=>
    string(11) "7 hours ago"
    ["LRNumber"]=>
    string(5) "LR003"
    ["IconColour"]=>
    string(5) "amber"
  }
}

2 个答案:

答案 0 :(得分:1)

if ($row2 == 'IconColour') {
    echo "\t\t<div class=\"responder-info\"><img src=\"/images/" . $value2 . "-icon.png\"></div>\n";
} else {
    // whatever you have now
}

答案 1 :(得分:1)

foreach loop中,您有一个键和一个值。您可以检查当前键==“IconColour”并显示图像而不是仅回显该值。如果您拥有名为“color”-icon.png的所有图标,则可以回显颜色(值)和硬编码图像名称的其他部分。例如:

$results_array [] = array("Name"=>'First Name', "telephone"=>'123456789', "updated"=>'1 hours ago', "LRNumber"=>'LR066', "IconColour"=>'amber');

foreach($results_array as $key => $value){
    echo "\t<div class=\"responder-info-parent\">\n";   
    foreach($value as $key2 => $value2) {
       if ($key2 == "IconColour") {
           echo "\t\t<div class=\"responder-info\"><img src=\"/images/" . $value2 . "-icon.png\"</div>\n"; 
       } else {
           echo "\t\t<div class=\"responder-info\">" . $value2 . "</div>\n";
       }

   }
   echo "\t</div>\n";
}