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

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

 
					 
					 
					
精彩评论