用PHP打印开关盒中的数组
我正在尝试使用switch/case打印用PHP打印开关盒中的数组,php,Php,我正在尝试使用switch/case打印$data数组的不同字段(如果存在) Array ( [title] => title [type] => Movie [hour] => [dayoftheweek] => 5 [dayofthemonth] => ) 我想做的是: <?php switch($data): case 'title': ?> <div class="col-md-4">
$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;
正在显示的外部开关/案例。问题在于,您的代码试图使用一个倍数值数组,比如一个唯一变量 您需要执行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循环仅回显白名单数据。如果没有符合条件的元素,则不会调用回声
明显优势:
- 如果您希望调整要显示的数据,白名单阵列使解决方案具有很强的可伸缩性
- 预过滤数据意味着foreach循环不会在不显示数据的情况下迭代数据
- 回音线是D.R.Y.(不要重复你自己);这使您的代码保持干净、简洁和易于管理
代码:()
在您的情况下,使用时必须检查当前元素的键,在每次迭代中分配给$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>';
}
}
开关($data)
没有意义。现在,您可以将$data
(这是一个数组)与字符串“title”进行比较。您可能希望如果(isset($data['title']){//echo the title}
?或者希望所有内容都打印出来,只需使用不同的id=“title”
?然后使用我的第二个注释<代码>foreach($key=>$value){switch($key)…}
没有代码只回答问题,你不是新来的。这个答案可能会受到太多迭代的影响。即使在成功显示标题
和类型
数据之后,循环仍会继续工作。(不是最佳实践)我不知道谁在否决我采用最佳实践的答案。被接受的解决方案不是干涸的,并且容易运行无意义的迭代。
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>";
}
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>';
}
}