2013-10-10 79 views
1

我有一個存儲多個郵政編碼的字段。 的郵政編碼列的查詢結果可能包含幾個郵政編碼:90027,90028,90068PHP if語句來檢查值是否存在於包含數組的列中

我需要一個,如果檢查語句,如果一個郵政編碼在結果

$zipstring = $rows['pool_zip_codes']); 

$zipsql = "SELECT `pool_zip_codes` FROM `cases` WHERE `id` = '{$rowid}' AND `pool_zip_codes` IN ('{$zipstring}') "; 

$zipqry = mysql_query($zipsql); 
$zipresult = mysql_fetch_row($zipqry); 

if (($zipresult[0]) == '90068') { 
this zip code is in the list 
} else { 
not in list 
} 
}; 
+2

*我有一個存儲領域的多個郵政編碼*你有沒有考慮改變你的數據庫結構?將諸如此類的信息放在一個字段中通常是一件壞事,例如不得不編寫時髦的代碼來執行此操作,如果數據庫的設計不同,這將很容易。 – alex

+0

強烈暗示 - 查看PDO - 這很容易,而且'mysql_ *'已被棄用。 (雖然不會解決這個問題) – Ben

+0

好的,我必須通過多個可以訪問1個案例的郵政編碼進行選擇。我應該如何向用戶展示僅包含郵政編碼的情況? –

回答

0

如果我讀你的問題正確,你想

##### 

#####,#####,#####... 
區分

要做到這一點,只需使用正則表達式來檢查字段是否匹配5位數。

if (preg_match("/^\d{5}$/", $zipresult[0])) { 
    ... 
} 

否則,其他人都在說,使用in_array()。什麼他們沒有說的是,你必須explode()字符串第一,使一個數組:

$exploded = explode(",", $zipresult[0]); 

if (in_array($exploded, "99999")) { 
    .... 
} 

編輯根據您的意見,您可以使用strpos()

$targetcode = "99999"; 
$found = array(); 
foreach ($zipresult as $row) { 
    if (strpos($row['pool_zip_codes'], $targetcode) !== false) { 
     $found[] = $row; 
    } 
} 

in_array()

$targetcode = "99999"; 
$found = array(); 
foreach ($zipresult as $row) { 
    $exploded = explode(",", $row['pool_zip_codes']); 
    if (in_array($exploded, $targetcode)) { 
     $found[] = $row; 
    } 
} 
0

嘗試t他

$zipresult = mysql_fetch_array($zipqry); 

if (($zipresult['pool_zip_codes']) == '90068') { 
this zip code is in the list 
} else { 
not in list 
} 
0

使用in_array()

if (in_array($zipresult[0],$zipresult)) 
{ 
echo "this zip code is in the list" ; 
} 
else { 
echo "not in list"; 
} 
+0

這不起作用,因爲'$ zipresult [0]'是一個字符串。 – Ben

0

分割字符串,並使用in_array

if (in_array(explode(',', $zipresult[0]),$zipresult)) 
{ 
    #this zip code is in the list 
} 
else { 
    #not in list 
} 
相關問題