Heim >Backend-Entwicklung >PHP-Tutorial >php数组过滤问题?
怎么把类似这样的数组过
<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>