2012-03-17 107 views
0

我搜索了Google和PHP文檔,但尚未找到解決方案。例如。假如我想在一個數組的所有鍵執行的strstr(),以確定哪些鍵是最接近於我在尋找,使得:在PHP中選擇數組密鑰

for($i=0;$i<count($array);$i++) { 
    if(@strstr(key($array[$i]), "$search")) { 
    print "Found: ". key($array[$i]). "<br>"; 
    } 
} 

「鍵($陣列[$ i] )「是一個佔位符,用於選擇數組鍵作爲執行strstr()的元素所需的任何函數或手段。

任何幫助表示衷心感謝。

回答

1
foreach ($array as $key => $value) 
{ 
    if(strstr($key, $search)) 
    { 
     print "Found: ". $key. "<br>"; 
    } 
} 
2

使用的foreach通過鍵,值對迭代。

foreach($array as $key=>$value) { 
    if(@strstr($key, "$search")) { 
    print "Found: ". $key. "<br>"; 
    } 
} 

更多參考: http://php.net/manual/en/control-structures.foreach.php

更新回答評論:

可以使用

array_keys - 返回所有鍵或數組

的鍵的子集

http://php.net/manual/en/function.array-keys.php

+0

謝謝!好奇心雖然,有沒有辦法通過一個for循環來實現這一點呢? – user784446 2012-03-17 09:59:51

+0

@ user784446查看更新的答案 – Pheonix 2012-03-17 10:01:42

1

這將做到這一點...

$found = array_filter(
        array_keys($array), 
        function($key) use ($search) { 
         return strpos($key, $search) !== FALSE; 
        }); 

CodePad

$found將是包含子字符串包含在$search中的所有密鑰的數組。

如果您只是在尋找另一個字符串的存在,請使用strpos()

+1

@Basti在你之前:) – alex 2012-03-17 09:59:11

0

另一種選擇是在一個步驟中拉出所需的鍵,例如,使用preg_grep()

$keys = preg_grep('/'.preg_quote($search, '/').'/', array_keys($array)); 

foreach ($keys as $key) { 
    echo "Found $key<br>"; 
}