2013-08-01 41 views
0

我使用此方法來檢查其term_id被選中要搜索的記錄:如何檢查多維數組不知道

if ($type) { 
     if ($type[0]->term_id == 24) echo '<div class="one"></div>'; 
     if ($type[1]->term_id == 23) echo '<div class="two"></div>'; 
     if ($type[2]->term_id == 22) echo '<div class="three"></div>'; 
    } 

但問題是,它的工作原理,只有當三者在數組中。

如果我在我的數組中只有兩個,term_id = 24和term_id = 22,那麼它只能找到24,並且找不到22,因爲現在22將是$ type [1]而不是type [2]。

所以,我需要以某種方式把一些通配符「*」,包括像if ($type[*]->term_id == 24) echo '<div class="one"></div>';

怎麼辦taht在PHP中最簡單的方法所有的可能性?

+4

使用'foreach()'循環? – Barmar

+0

你從哪裏得到22 23 24? – Dale

+0

嘗試使用in_array函數。 Refrerence - http://php.net/manual/en/function.in-array.php –

回答

4
if ($type) { 
    foreach($type as $element) { 
     switch($element->term_id) { 
      case 24: echo '<div class="one"></div>'; 
        break; 
      case 23: echo '<div class="two"></div>'; 
        break; 
      case 22: echo '<div class="three"></div>'; 
        break; 
     } 
    } 
} 
0
if (isset($type) && is_array($type)) { 
    foreach($type as $element) { 
     switch($element->term_id) { 
      case 24: 
       echo '<div class="one"></div>'; 
       break; 
      case 23: 
       echo '<div class="two"></div>'; 
       break; 
      case 22: 
       echo '<div class="three"></div>'; 
       break; 
     } 
    } 
} 
0

定義你的選擇一個地圖,並通過您$type - 陣列走路:

$map = array(22=>'three',23=>'two',24=>'one'); 
if ($type){ 
    array_walk(
     $type, 
     function($item,$key,$map){ 
      if(in_array($item->term_id, array_keys($map))){ 
       echo '<div class="'.$map[$item->term_id].'"></div>'; 
      } 
     }, 
     $map 
    ); 
} 
0

的另一種方法是使用此功能

function in_array_field($needle, $needle_field, $haystack, $strict = false) { 
    if ($strict) { 
     foreach ($haystack as $item) 
      if (isset($item->$needle_field) && $item->$needle_field === $needle) 
       return true; 
    } 
    else { 
     foreach ($haystack as $item) 
      if (isset($item->$needle_field) && $item->$needle_field == $needle) 
       return true; 
    } 
    return false; 
} 

您使用的功能如:

if ($type) { 
    if (in_array_field('24', 'term_id', $type)) 
     echo '<div class="one"></div>'; 
    if (in_array_field('23', 'term_id', $type)) 
     echo '<div class="two"></div>'; 
    if (in_array_field('22', 'term_id', $type)) 
     echo '<div class="three"></div>'; 
}