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>';

如何在php中做最简单的方法?

4

4 回答 4

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;
       }
    }
}
于 2013-08-01T08:55:52.867 回答
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;
       }
    }
}
于 2013-08-01T09:01:21.570 回答
0

为您的选项定义一个 Map 并遍历您的$type-Array:

$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
    );
}
于 2013-08-01T09:19:46.673 回答
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>';
}  
于 2013-08-01T09:20:08.280 回答