2012-06-30 89 views
0

在我的SQL數據庫中,我有一個查詢將多行中的值轉換爲單個連接字符串。PHP如何判斷一個字符串是否包含某個值

id | image_filename | slides | languages | types 
------------------------------------------------------------------------- 
10 | filename.jpg  | 55,4  |  1   | TN,CQ 

在PHP中,我試圖檢查該圖像與哪個幻燈片關聯。如果它關聯,則該複選框將被檢查。

$isChecked = (strpos($slide,"5") !== false) ? " checked=\"checked\"" : ""; 

問題是,上面的語句將返回true,因爲其中包含5。需要發生的是它將返回false,因爲5不等於55.

如何在PHP中創建一些內容來檢查每個逗號前面的值,並查看它是否與我可以指定的某個字符串匹配。

謝謝!

回答

2

比較逗號連接的實際值!

$isChecked = in_array("5",explode(",",$slide))!=false?" checked=\"checked\"":""; 

參見explode

編輯:只注意到你只想檢查逗號前的值。這實際上比從字符串創建數組要快:

$isChecked = "5"==strstr($slide,',',true)?" checked=\"checked\"":""; 

假設你的PHP 5.3+。見strstr

3

你應該explode($slide)然後轉換爲整數

$parts = explode(',', $slide); 
if(intval($parts[0]) == 55) { 
    // Do stuff 
} 
+0

Upvote不會錯過帖子前的「逗號前部分」,儘管整數轉換不一定是必需的。 :) –

1

你實際上應該使用MySQL FIND_IN_SET()功能在RDBMS級別可靠地做到這一點。見this SO question,其答案說明你的目標。

相關問題