strpos用1选择一切

时间:2013-10-27 14:26:44

标签: php

我有一个像

这样的数据字符串
$amenities = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21

这些是来自21 chkbox的用户选择值,这些值将不会修复$ amenities

有时会像

  $amenities = 3,4,5,6,7,8,9,10,11,12,13,

有时候

  $amenities = 7,8,9,10,11,12,13,14,15,16,17,18,19

或有时

$amenities = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21

表示动态字段

我正在做类似

的事情
$amenities = 3,4,5,6,7,8,9,10,11,12,13,
     if (strpos($amenities,'1') !== false){?>
 <li class="available_amen"> Smooking allowed</li>
  <?php }else{?>
    <li class="not_amen"> Smooking allowed</li>

     <?php }?>

问题是&#39; 1&#39;实际上没有,但在10,11,12,13和#34; 1&#34;存在并且strpos检测一个存在并运行if else语句

任何人都可以告诉我解决方案吗? 如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

你不能只是在这样的字符串中搜索1,那里有很多1你注意到自己。让它更有条理的搜索。

$search=1;
$values=explode(",",$amenities);

if(array_search($search,$values)!==FALSE)
{
   // 1 is there
}

答案 1 :(得分:0)

假设你有:

$amenities = '7,8,9,10,11,12,13,14,15,16,17,18,19';

然后做:

$amenities = explode(',', $amenities);

if (in_array(1, $amenities)) { ?>
  <li class="available_amen"> Smooking allowed</li>
<?php } else { ?>
  <li class="not_amen"> Smooking allowed</li>
<?php }

另见the manual