2013-09-26 40 views
0

我得到一個標記與一個類別,說:「行李」我想知道什麼父類別的行李在地圖上設置特定的標記。確定5個數組中的某個字符串是否存在的最佳方法是什麼?

我創建了我需要顯示的每個類別的頂級類別列表。喜歡的東西:

$education = [ "adultedu", "collegecounseling", "collegeuniv", "educationservices", "elementaryschools", "highs|chools", "preschools", "privatetutors", "religiousschools", "specialed", "specialtyschools", "artschools", "cprclasses", "cookingschools", "cosmetology_schools"] 

我得到了相同的名單運輸,購物,健康等...

什麼是尋找哪一類我的關鍵字是最好的方法是什麼?

+0

看來你在[XY-問題(中間http://meta.stackexchange.com/questions/66377/what是-is-the-xy-problem) - 即詢問你的「Y」解決方案。請詳細描述整個問題。 –

+0

對不起,我的英語,但似乎有人明白我的意思:p – Xavier

回答

1

使用的數組,並通過循環利用的同時in_array

$arrays = array(
    'education' => &$education, 
    'transport' => &$transport, 
    'shopping' => &$shopping, 
    'health' => &$health 
); 

$searchingFor = 'foo'; 

$searchingForCategory = null; 
foreach ($arrays as $category => $array) { 
    if (in_array($searchingFor, $array)) { 
     $searchingForCategory = $category; 
     break; 
    } 
} 

var_dump($searchingForCategory); //education/transport/shopping/health/NULL 
+0

似乎很好,子公司問題爲什麼'&$ education'?什麼是'&'? – Xavier

+0

@x_vi_r它是一個'reference'運算符。這意味着,不是將'$ education'數組複製到'$ arrays ['education']'(所以我們有2個數組,填滿了兩倍的內存),而是指向內存中的同一個點。 – h2ooooooo

+0

Woo不知道! kool – Xavier

0

你必須檢查每個陣列與in_array()函數。

if (in_array('luggage', $education)) { 
    // found 
} 

你也可以添加所有頂級類別,一個陣列,可以說$topCategories;) 然後你可以用簡單的循環檢查所有:

$foundInCategory = ''; 
foreach ($topCategories as $name => $subCategories) { 
    if (in_array('luggage', $subCategories)) { 
     $foundInCategory = $name; 
     break; 
    } 
} 

它會添加類別名稱中的子類別是發現變量爲$foundInCategory

相關問題