2017-08-09 45 views
0

我開發獲取的用戶技能陣列包含user_id說明和技能的程序,這個數組是這樣的:PHP搜索

array(4) { 
    [17]=> 
    array(3) { 
     [0]=> 
      string(8) "word" 
     [1]=> 
      string(10) "power point" 
     [2]=> 
      string(28) "excel" 
     } 
    [16]=> 
    array(3) { 
    [0]=> 
    string(14) "english 
    [1]=> 
    string(14) "french" 
    [2]=> 
    string(12) "farsi" 
    } 
} 

關鍵是USER_ID和值的技能排列,現在我想搜索具有兩個值的user_ids:英語或單詞,我希望返回17,16,我該怎麼做? ,感謝您的幫助:)

+0

我看到這個問題,我認爲在陣列搜索ID,我只是搜索多價值,我可以再次做這個方法嗎? –

+0

用戶ID 16&17沒有你想要的兩個值(英文,單詞)!他們在每個ID中只有一個值。 –

+0

StackOverflow不是教程網站,也不是搜索引擎的替代品。我們可以提供幫助,但首先要做到這一點是您的工作。 [付出一些努力](http://meta.stackoverflow.com/questions/261592),然後問清楚的解釋和[MCV示例](http://stackoverflow.com/help/mcve)(如果適用)。 –

回答

2

該解決方案使用array_intersect功能:

$arr = [ 17 => ["word", "power point", "excel"], 16 => ["english", "french", "farsi"] ]; 
$search_keys = ["english", "word"]; 
$keys = []; 

foreach ($arr as $k => $v) { 
    if (array_intersect($search_keys, $v)) $keys[] = $k; 
} 

print_r($keys); 

輸出:

Array 
(
    [0] => 17 
    [1] => 16 
)