[英]PHP: search array with similar matching keywords
我有一個像
$arr = array(0 => array(id=>1,name=>"Apple"),
1 => array(id=>2,name=>"Orange"),
2 => array(id=>3,name=>"Grape")
);
我已經編寫了用於搜索多維數組的代碼。
就這個
function search($array, $key, $value)
{
$results = array();
search_r($array, $key, $value, $results);
return $results;
}
function search_r($array, $key, $value, &$results)
{
if (!is_array($array)) {
return;
}
if (isset($array[$key]) && $array[$key] == $value) {
$results[] = $array;
}
foreach ($array as $subarray) {
search_r($subarray, $key, $value, $results);
}
}
但它僅適用於完全匹配的關鍵字。 我需要的是,如果我在此數組中搜索“ Gra”。 該函數應返回
array(0 => array(id=>1,name=>"Grape")
);
這似乎類似於mysql%LIKE%條件。如何在PHP數組中完成此操作?
檢查字符串是否匹配時,可以改用strpos
strpos($strToCheck, 'Gra') !== false;//Will match if $strToCheck contains 'Gra'
strpos($strToCheck, 'Gra') === 0; //Will match if $strToCheck starts with 'Gra'
請注意,以上內容區分大小寫。 對於不區分大小寫的情況,您可以在比較之前使用strripos
。 strtoupper
兩個字符串
在您的示例中,支票將變為:
if (isset($array[$key]) && strpos($array[$key],$value) !== false) {
$results[] = $array;
}
您可以在PHP中使用stristr函數進行字符串操作,而不必考慮不同的情況並將其轉換為大寫形式。
stristr函數不區分大小寫 ,因此您的代碼將如下所示
if (isset($array[$key]) && stristr($array[$key], $value) !== false) {
$results[] = $array;
}
專注於您在此處寫的那行-
if (isset($array[$key]) && $array[$key] == $value) {
我們可以對其進行修改以搜索子字符串,而不是完全匹配-
if (isset($array[$key]) && strpos($array[$key], $value)) {
這將嘗試查找該值是否存在於$array[$key]
的內容中
希望能幫助到你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.