适用于所有逗号分隔值,但不适用于Restauant
。
请建议我该怎么做。
<?php
$service="Restaurant,24x7_room_service,Parking,currency_exchange,deposite_boxes,Laundry,pool,gym,AC,TV,Fridge,Intercom,Intercom,Extra Bed (if needed Chargeable)";
//$dservices=str_ireplace(',',' ',$d['services']);
$dservices="Restaurant,24x7_room_service,Parking,currency_exchange,deposite_boxes,Laundry,pool,gym,AC,TV";
$loop=explode(",",$service);
foreach($loop as $action)
{
?>
<li style="width:50%;float:left;padding: 10px;"><?php if(strpos($dservices,$action)=='') { echo '<i style="color:red;" class="fa fa-times-circle"></i>';}else{ ?><i style="color:#004386;" class="fa fa-check-circle"></i> <?php } ?><?= $action ?> </li>
<?php }?>
答案 0 :(得分:2)
使用以下内容替换您的if条件:
if(strpos($dservices, $action) === false)
答案 1 :(得分:0)
因为您的餐厅位于0位置,情况属实,但是返回值0会使您的if
条件为假。
更改了此行代码
if(strpos($dservices,$action)=='')
到
if(strpos($dservices,$action)=== false)
这将检查位置编号,如果不存在则返回负值。
答案 2 :(得分:0)
更好的方法是将$dservices
分解为另一个数组,而不是使用strpos
。
$dservices_array = array_flip(explode(',', $dservices));
foreach ($loop as $action) {
?>
<li style="width:50%;float:left;padding: 10px;">
<?php
if(!isset($dservices_array[$action])) {
echo '<i style="color:red;" class="fa fa-times-circle"></i>';
} else {
echo '<i style="color:#004386;" class="fa fa-check-circle"></i>';
}
echo $action;
?> </li>
<?php }?>
使用strpos
会导致错误匹配。例如,如果$action
为TV
且$dservices
包含HDTV
。