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