我有一个sql字段,我们的值就像
1,2,3,4,5,6-
如果获取这些值并将其分解为
$amenities = 1,2,3,4,5,6
$amenities_check = explode( "," , $amenities );
然后我运行一个foreach循环
<?php
$i = 1;
foreach($amenities_check as $amenities_conf)
{
if( $amenities_conf != "" && $amenities_conf == 6)
{
?>
<li class="available_amen">Smoking Allowed</li>
<?php
}
else
{
?>
<li class="not_amen">Smoking Allowed</li>
<?php
}
if ($i++ == 1) break;
}
?>
现在问题是这个循环显示相同的行6次并且当它满足数据中的6位时显示正确的li类如果我应用$ i ++它只检查数据集中的第一个数据。
任何帮助foreach寻找所需的值,如1 2 3,并根据它执行功能..
谢谢
答案 0 :(得分:0)
这是你在找什么?
<?php
foreach($amenities_check as $amenities_conf) {
if ($amenities_conf == 6) {
?>
<li class="available_amen">Smoking Allowed</li>
<?php
}
else {
?>
<li class="not_amen">Smoking Allowed</li>
<?php
}
}
?>
编辑:
<?php
foreach($amenities_check as $amenities_conf) {
if ($amenities_conf == 6) {
?>
<li class="available_amen">Smoking Allowed</li>
<?php
}
}
?>
<li class="not_amen">Smoking Allowed</li>
或者像上面说的那样,使用in_array()。
<?php
if (in_array("6", $amenities_check)) {
?>
<li class="available_amen">Smoking Allowed</li>
<?php
}
?>
<li class="not_amen">Smoking Allowed</li>
答案 1 :(得分:0)
从评论中,你真正想知道的是数组中是否有6个,所以你不想在循环中输出任何东西。最简单的方法是使用相当不言自明的in_array
function;就这么简单:
if( in_array('6', $amenities_conf) )
{
?>
<li class="available_amen">Smoking Allowed</li>
<?php
}
else
{
?>
<li class="not_amen">Smoking Allowed</li>
<?php
}
或者,通过循环数据库结果并基于它准备结构化数据,将逻辑与显示分开。对于这个例子,下面可能是过度杀戮,但显示了一般方法:
// While retrieving data from the DB
$amenity_names = array(
1 => 'pets',
// ...
6 => 'smoking'
);
$included_amenities = array();
$amenities_check = explode( "," , $amenities );
foreach ( $amenities_check as $amenity )
{
$name = $amenity_names[$amenity];
$included_amenities[$name] = true;
}
// In the View / template code
if( $included_amenities[['smoking'] )
{
?>
<li class="available_amen">Smoking Allowed</li>
<?php
}
else
{
?>
<li class="not_amen">Smoking Allowed</li>
<?php
}