Home >Backend Development >PHP Tutorial >php数组过滤问题?

php数组过滤问题?

WBOY
WBOYOriginal
2016-06-06 20:22:271355browse

怎么把类似这样的数组过

<code>["Q"] => array(4) {
        [0] => array(11) {
          ["id"] => string(1) "1",["k"] => string(1) "Q"
        }
         [1] => array(11) {
          ["id"] => string(1) "2",["k"] => string(1) "H"
        }
        [2] => array(11) {
          ["id"] => string(1) "3", ["k"] => string(1) "V"
        }
         [3] => array(11) {
          ["id"] => string(1) "4",  ["k"] => string(1) "V"
        }
}
["V"] => array(4) {
        [0] => array(11) {
          ["id"] => string(1) "1",["k"] => string(1) "Q"
        }
         [1] => array(11) {
          ["id"] => string(1) "2",["k"] => string(1) "H"
        }
        [2] => array(11) {
          ["id"] => string(1) "3", ["k"] => string(1) "V"
        }
         [3] => array(11) {
          ["id"] => string(1) "4",  ["k"] => string(1) "V"
        }
}
["H"] => array(4) {
        [0] => array(11) {
          ["id"] => string(1) "1",["k"] => string(1) "Q"
        }
         [1] => array(11) {
          ["id"] => string(1) "2",["k"] => string(1) "H"
        }
        [2] => array(11) {
          ["id"] => string(1) "3", ["k"] => string(1) "V"
        }
         [3] => array(11) {
          ["id"] => string(1) "4",  ["k"] => string(1) "V"
        }
}
</code>

滤成这样

<code>["Q"] => array(1) {
        [0] => array(11) {
          ["id"] => string(1) "1"
          ["k"] => string(1) "Q"
        }
}
["V"] => array(2) {
        [0] => array(11) {
          ["id"] => string(1) "3"
          ["k"] => string(1) "V"
        }
         [1] => array(11) {
          ["id"] => string(1) "4"
          ["k"] => string(1) "V"
        }
}
["H"] => array(1) {
         [0] => array(11) {
          ["id"] => string(1) "2"
          ["k"] => string(1) "H"
        }
}
</code>

回复内容:

怎么把类似这样的数组过

<code>["Q"] => array(4) {
        [0] => array(11) {
          ["id"] => string(1) "1",["k"] => string(1) "Q"
        }
         [1] => array(11) {
          ["id"] => string(1) "2",["k"] => string(1) "H"
        }
        [2] => array(11) {
          ["id"] => string(1) "3", ["k"] => string(1) "V"
        }
         [3] => array(11) {
          ["id"] => string(1) "4",  ["k"] => string(1) "V"
        }
}
["V"] => array(4) {
        [0] => array(11) {
          ["id"] => string(1) "1",["k"] => string(1) "Q"
        }
         [1] => array(11) {
          ["id"] => string(1) "2",["k"] => string(1) "H"
        }
        [2] => array(11) {
          ["id"] => string(1) "3", ["k"] => string(1) "V"
        }
         [3] => array(11) {
          ["id"] => string(1) "4",  ["k"] => string(1) "V"
        }
}
["H"] => array(4) {
        [0] => array(11) {
          ["id"] => string(1) "1",["k"] => string(1) "Q"
        }
         [1] => array(11) {
          ["id"] => string(1) "2",["k"] => string(1) "H"
        }
        [2] => array(11) {
          ["id"] => string(1) "3", ["k"] => string(1) "V"
        }
         [3] => array(11) {
          ["id"] => string(1) "4",  ["k"] => string(1) "V"
        }
}
</code>

滤成这样

<code>["Q"] => array(1) {
        [0] => array(11) {
          ["id"] => string(1) "1"
          ["k"] => string(1) "Q"
        }
}
["V"] => array(2) {
        [0] => array(11) {
          ["id"] => string(1) "3"
          ["k"] => string(1) "V"
        }
         [1] => array(11) {
          ["id"] => string(1) "4"
          ["k"] => string(1) "V"
        }
}
["H"] => array(1) {
         [0] => array(11) {
          ["id"] => string(1) "2"
          ["k"] => string(1) "H"
        }
}
</code>

<code><?php $arr = array(
    'Q'=>array(
        array(
            'id'=>1,
            'k'=>'Q'
        ),
        array(
            'id'=>2,
            'k'=>'H'
        ),
        array(
            'id'=>3,
            'k'=>'V'
        ),
        array(
            'id'=>4,
            'k'=>'V'
        ),                    
    ),    
    'V'=>array(
        array(
            'id'=>1,
            'k'=>'Q'
        ),
        array(
            'id'=>2,
            'k'=>'H'
        ),
        array(
            'id'=>3,
            'k'=>'V'
        ),
        array(
            'id'=>4,
            'k'=>'V'
        ),    
    ),
    'H'=>array(
        array(
            'id'=>1,
            'k'=>'Q'
        ),
        array(
            'id'=>2,
            'k'=>'H'
        ),
        array(
            'id'=>3,
            'k'=>'V'
        ),
        array(
            'id'=>4,
            'k'=>'V'
        ),    
    ),    
);

echo '<pre class="brush:php;toolbar:false">';
print_r($arr);

$new_arr = array();
foreach($arr as $key=>$val) {
    foreach($val as $k=>$v) {
        if($key == $v['k']) {
            $new_arr[$key][] = $v;
        }
    }
}
echo '<hr>';
print_r($new_arr);

array_filter($arr,fun);
fun里面用数组的key去和k判断,不等于的unset掉

<code>
$keys = array_keys($arr);
$newArr = array();
$i = 0;
foreach ($arr as $key => $value) {
    $newArr[$key] = array_filter($value, function ($val) {
        GLOBAL $keys;
        GLOBAL $i;
        return $val["k"] == $keys[$i];
    }); 
    $i++;
}
</code>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn