有时候我们得到的数据结构如下:
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:
大胆走出舒适区是一种挑战,也是一种成长。学着去尝试,学着清除自己给自己设定的条条框框,接触没有接触过的人,做一些以前不敢做的事,在尝试新事物的过程中,你会收获不一样的力量。

声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。


精彩评论