如何在不知道要搜索的记录的情况下检查多维数组

时间:2013-08-01 08:51:39

标签: php arrays

我正在使用此方法来检查检查了哪个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]而不是类型[2]。

所以,我需要以某种方式放一些通配符“*”来包含所有可能性,例如if ($type[*]->term_id == 24) echo '<div class="one"></div>';

如何在PHP中使用最简单的方法?

4 个答案:

答案 0 :(得分: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;
       }
    }
}

答案 1 :(得分: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;
       }
    }
}

答案 2 :(得分: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
    );
}

答案 3 :(得分: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>';
}