在php中的strpos()遇到麻烦

时间:2016-02-03 05:58:44

标签: php

ScreenShot适用于所有逗号分隔值,但不适用于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 }?>

3 个答案:

答案 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会导致错误匹配。例如,如果$actionTV$dservices包含HDTV