[英]Print array in switch case with PHP
我試圖打印$data
數組的不同字段,如果它們存在使用switch / case。
Array ( [title] => title [type] => Movie [hour] => [dayoftheweek] => 5 [dayofthemonth] => )
我正在嘗試做什么:
<?php
switch($data):
case 'title':
?>
<div class="col-md-4">
<div class="name-value" id="title"><?=$data['title']?></div>
</div>
<?php
break;
case 'type':
?>
<div class="col-md-4">
<div class="name-value" id="type"><?=$data['type']?></div>
</div>
<?php
break;
endswitch;
等等。
謝謝! 問題是什么都沒有顯示,但當我鍵入例如<?=$data['type']?>
在開關/外殼之外它正在顯示。
問題是你的代碼試圖使用多個值的數組,如一個唯一的變量。
您需要執行foreach來解析所有數組變量,然后您可以使用開關來獲取每個值(標題,類型等)並返回所需的HTML。
試試這個:
<?php
/* Parse all values */
foreach ($data as $key => $value) {
/* Parse all variables in each value */
switch($key) {
case 'title':
?>
<div class="col-md-4">
<div class="name-value" id="title"><?=$value?></div>
</div>
<?php
break;
case 'type':
?>
<div class="col-md-4">
<div class="name-value" id="type"><?=$value?></div>
</div>
<?php
break;
}
}
如果唯一的限定條件是一組已知的鍵,則可以根據白鍵列表過濾掉您不需要的元素。 然后使用foreach循環僅回顯列入白名單的數據。 如果沒有符合條件的元素,則不會調用回聲。
顯着優勢:
代碼:( 演示 )
$data = ['title' => 'The Title', 'type' => 'Movie', 'hour' => '', 'dayoftheweek' => 5, 'dayofthemonth' => ''];
$whitelist = ['title' => '', 'type' => ''];
$filtered = array_intersect_key($data, $whitelist);
// var_export($filtered); // uncomment if you want to see what remains
foreach($filtered as $key => $value) {
echo "<div class=\"col-md-4\">";
echo "<div class=\"name-value\" id=\"$key\">$value</div>";
echo "</div>";
}
輸出:
<div class="col-md-4">
<div class="name-value" id="title">The Title</div>
</div>
<div class="col-md-4">
<div class="name-value" id="type">Movie</div>
</div>
根據項目要求,可以通過多種方式實現此任務。 您甚至可能希望構建更多過濾條件。 如果您想更確定什么是最好的技術,那么您需要提供更多/更好的項目細節。
如果您不需要可擴展的解決方案,但需要單獨/不同地處理每個密鑰的數據,那么您可以編寫isset()
調用並回顯內容而無需任何循環(迭代條件)。
if (isset($data['title'])) {
echo "<div class=\"col-md-6\">";
echo "<div class=\"unique123\" id=\"movie_title\">{$data['title']}</div>";
echo "</div>";
}
if (isset($data['type'])) {
echo "<div class=\"col-md-4\">";
echo "<div class=\"type_group\" id=\"type\">{$data['type']}</div>";
echo "</div>";
}
在您的情況下,使用PHP的foreach,您必須檢查當前元素的鍵,在每次迭代時分配給$key
變量。
foreach (array_expression as $key => $value)
statement
還添加了一些重構,以避免腳本中出現重復的代碼。
代碼示例:
<?php
foreach ($data as $key => $value) {
if (in_array($key, ['title', 'type'])) {
echo '<div class="col-md-4">';
echo '<div class="name-value" id="' . $key . '">' . $value . '</div>';
echo '</div>';
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.