我尝试打印$data
数组的不同字段(如果它们使用开关/大小写存在的话)。
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']?>
时,就会显示出来。
答案 0 :(得分:3)
问题是您的代码正在尝试使用多个值数组,例如唯一变量。
您需要执行一次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;
}
}
答案 1 :(得分:2)
如果唯一合格的条件是一组已知的键,则可以根据白键列表过滤出不需要的元素。然后使用foreach循环仅回显列入白名单的数据。如果没有限定元素,则不会调用任何回声。
明显优势:
代码:(Demo)
$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>";
}
答案 2 :(得分:1)
在这种情况下,使用PHP's 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>';
}
}