搜尋

首頁  >  問答  >  主體

mysql - php 在值中找字串

每個用戶有一個欄位叫做skills
可能是 哈囉,你好,再見,不錯,太棒了 但每個人都不太一樣
我要如何找出該欄位的字元
若他的skills欄位有 太棒了 則顯示checked..類似這樣?

補充

<? $skills = $SQLROW['skills'];?>
 <? foreach($t as $key=>$value){  ?>
     <input type="checkbox" name="skills_profile[]" id="profile<? echo $key;?>" value="<? echo $value;?>"
        <? if(strpos($skills,$value))
  {
   echo 'checked';
  }
   ?>>
        <label for="profile<? echo $key;?>"><? echo $value;?></label>
        <? } ?>

明明有哈囉,你好,再見,不錯,太棒了
但是他卻只有 你好,再見,不錯,太棒了 有checked?
這是哪裡有問題?

PHP中文网PHP中文网2817 天前422

全部回覆(5)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-10 17:39:05

    没太看懂你的意思,不知道这是不是你要的

    <?php
    $sys_arr = explode(',','哈囉,你好,再見,不錯,太棒了');
    $skills = explode(',','你好,再見');
    foreach($sys_arr as $v){
        $ck = in_array($v,$skills)?' checked':'';
        echo "<input type='checkbox' value='{$v}'{$ck}>{$v}\n";
    }

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-10 17:39:05

    把你回复的代码中的 strpos($skills,$value) 这个判断改成 if(strpos($skills,$value) !== false) 因为可能匹配位置为 0 的 skills

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-10 17:39:05

    首先你要知道strpos函数返回的是什么:

    strpos() 函数查找字符串在另一字符串中第一次出现的位置。
    返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。
    注释:字符串位置从 0 开始,不是从 1 开始。

    因为你只是 if(strpos($skills,$value)) 所以,你的 哈囉 位置在 0
    你需要改成 (当然也可以换成其他写法)

    if(strpos($skills,$value) !== false)

    参考连接:
    http://www.w3school.com.cn/ph...

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-10 17:39:05

    strops()返回 needle 存在于 haystack 字符串起始的位置(独立于 offset)。同时注意字符串位置是从0开始,而不是从1开始的。
    如果没找到 needle,将返回 FALSE。
    

    判断语句改成 if(strpos($skills,$value) !== false)

    strops函数

    回覆
    0
  • 怪我咯

    怪我咯2017-04-10 17:39:05

    写sql语句时 select id from table where skills like '%太棒了%'

    回覆
    0
  • 取消回覆