2015-05-27 46 views
4

我有以下的列表(例如代碼,變量$ CODE_NAME): 「A125」 「B120」 「C105」如何使如果數組LIKE變量,然後做一些事情

和陣列($ codes_list )有很多的代碼,而且在他們的一些多餘的話: 「A125 NAMEA」 「B8800柯」 「B120名稱BC」 「D3030」

在一個for循環,我可以檢查是否有任何的上面列表中的值($ code_name)存在於數組中。

if (in_array($code_name, $codes_list)) 
    { 
    echo "Do nothing<br/>"; 
    } else { 
    echo "Code is not in the list, create new one in DB: ".$code_name."<br/>"; 
    } 

問題我說的是$ code_name只包含「A125」。但是在數組列表中添加了一些額外的文本「A125 NameA」。所以結果不會是我想要的結果。

如果列表中存在代碼名稱ALREADY EXISTS(例如A125,B120),則不執行任何操作。如果它不存在(C105),則在數據庫中創建一個。

但我想要實現的是檢查$ code_name LIKE %%是否在$ codes_list數組中。所以我試圖找到一個類似於mysql的函數。

這可能嗎?

if (in_array(LIKE%'.$code_name.'%, $codes_list)) 

感謝您的幫助

+2

這似乎什麼都沒有做與MySQL,所以我刪除代碼。 –

+2

它真的不清楚。你想達到什麼。 –

+0

你可以使用strpos()http://php.net/strpos – Szenis

回答

0

我認爲你正在尋找這樣的: -

<?php 
    $code_array = array("A125 NameA"); 
    $abc = 'A125'; 

    print_r(preg_grep("/".$abc."/" , $code_array)); 

    $check = preg_grep("/".$abc."/" , $code_array); 
    if (!empty($check)) 
    { 
    echo "Do nothing<br/>"; 
    } else { 
    echo "Code is not in the list, create new one in DB: ".$code_name."<br/>"; 
    } 

    ?> 

輸出: - http://prntscr.com/79xylb

注: - preg_grep將產生具有匹配元素的數組(如果有的話發現匹配),否則空數組。

+0

你好,謝謝你的建議。問題是我有很多變量($ code_name)。也許超過100個。並且具有不同的結構。所以在陣列中它可以是「A125 NameA」或「NameA A125」或「A1 NameA A125」。我在找的是將$ code_name =「A125」與數組內的其中一個元素進行匹配。所以究竟如何LIKE %% mysql函數工作:) – shieldcy

+0

它將工作。不管有多少元素,有什麼樣的模式。只是嘗試 –

+0

謝謝,我會嘗試,當然會upvote你的帖子,如果它的工作:)祝你有美好的一天 – shieldcy

1
foreach($codes_list as $key => $value) { 
if (strpos($value, $code_name) !== false) { 
     //Do Nothing 
    } 
    else{ 

     //The code doesn't match 

    } 
} 
+0

這個答案的麻煩是假的或真的條件將出現在codes_list中的每個值...不僅僅是整個數組中的一個值。 – CmPi

3

您可以使用preg_grep這一點。您可以使用確切模式進行搜索。

$check = preg_grep("/A125/", $codes_list); 
    if (!empty($check)) 
    { 
    echo "Do nothing<br/>"; 
    } else { 
    echo "Code is not in the list, create new one in DB: ".$code_name."<br/>"; 
    } 

preg_grep將返回陣列匹配元素如果任何匹配以極將返回一個空數組。你只需檢查返回的數組是否爲空。

$array = array("abc123 kj", "b45 kl", "f34"); 

var_dump(preg_grep("/abc123/", $array)); 

輸出

array(1) { 
    [0]=> 
    string(9) "abc123 kj" 
} 

preg_grep

+0

你告訴的第一個代碼會給'致命錯誤:不能在寫入上下文中使用函數返回值'.thanks。請檢查。 –

+0

現在它正確。好。 –

+0

這將取決於PHP版本。儘管已經更新了代碼。 :) –

1

另一種解決辦法是這樣的:

if (strpos(implode('§', $codes_list),$code_name)===false) { 
echo "Code is not in the list, create new one in DB: ".$code_name."<br/>"; 
} else { 
echo "Do nothing<br/>"; 
} 
相關問題