有时候我们得到的数据结构如下:
array (size=4) 0 => array (size=3) 'article_id' => int 10 'status' => int 2 'link' => string 'qq.com' (length=6) 1 => array (size=3) 'article_id' => int 16 'status' => int 1 'link' => string 'baidu.com' (length=9) 2 => array (size=3) 'article_id' => int 11 'status' => int 3 'link' => string '360.com' (length=7) 3 => array (size=3) 'article_id' => int 16 'status' => int 3 'link' => string 'taobao.com' (length=10)
因为某些场景需要,我们需要获取以上数组中的status和link并返回一个由status和link组成的新二维数组。status和link组成的新二维数组结构如下:
array (size=4) 0 => array (size=2) 'status' => int 2 'link' => string 'qq.com' (length=6) 1 => array (size=2) 'status' => int 1 'link' => string 'baidu.com' (length=9) 2 => array (size=2) 'status' => int 3 'link' => string '360.com' (length=7) 3 => array (size=2) 'status' => int 3 'link' => string 'taobao.com' (length=10)
实现以上数组结构 有人说可以在foreach里面一个一个unset()掉,但如果要删除的数组元素很多。。unset()显然不方便,且代码量还多。
除了上面说的unset还有什么方法吗? 我们可以自定义一个函数来实现
完整代码上场:
$arr = array( array('article_id' => 10,'status' => 2,'link' => 'qq.com'), array('article_id' => 16,'status' => 1,'link' => 'baidu.com'), array('article_id' => 11,'status' => 3,'link' => '360.com'), array('article_id' => 16,'status' => 3,'link' => 'taobao.com'), ); $arr2 = array('status','link'); /** * 从二维数组中获取指定的key->value * @author xiaozhou * @param array $arr 从该数组中获取(二维数组) * @param array $key_arr 从$arr数组中获取$key_arr中的key->value * @return array 返回一个二维数组 */ function get_arr($arr,$key_arr) { $result = []; foreach($arr as $key => $val) { foreach($key_arr as $k => $v) { $result[$key][$v] = $val[$v]; } } return $result; } var_dump(get_arr($arr,$arr2)); //以上就是我们要的二维数组结构了
PS:
大胆走出舒适区是一种挑战,也是一种成长。学着去尝试,学着清除自己给自己设定的条条框框,接触没有接触过的人,做一些以前不敢做的事,在尝试新事物的过程中,你会收获不一样的力量。
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。
精彩评论