如何将具有多个数组键和值的数组提取到另一个数组?

时间:2018-03-27 14:39:57

标签: php arrays

请注意我的php版本不是7。 我有一个数组数组,如:

array( 

    '0' => array('id'=>1,'name'=>'abc',"class"=>'xyz'),
    '1' => array('id'=>2,'name'=>'abc1',"class"=>'xyz1'),
    '2' => array('id'=>3,'name'=>'abc',"class"=>'xyz2'),
);

我想将它提取为两个数组。像

array( 

    '0' => array('id'=>1,'name'=>'abc'),
    '1' => array('id'=>2,'name'=>'abc1'),
    '2' => array('id'=>3,'name'=>'abc'),
);

array( 

    '0' => array('id'=>1,"class"=>'xyz'),
    '1' => array('id'=>2,"class"=>'xyz1'),
    '2' => array('id'=>3,"class"=>'xyz2'),
);

我如何实现这一目标,我正在寻找一些内置函数等,我研究了它支持array_column但版本高于7

编辑: 我还尝试了array_intersect_keyarray_slice,但它使用的是单维数组。

2 个答案:

答案 0 :(得分:1)

然后你可能想保持简单,只需使用像这样的直接foreach循环

$old = array( 
            array('id'=>1,'name'=>'abc',"class"=>'xyz'),
            array('id'=>2,'name'=>'abc1',"class"=>'xyz1'),
            array('id'=>3,'name'=>'abc',"class"=>'xyz2')
        );

foreach ( $old as $temp ) {
    $new1 = array('id' => $temp['id'], 'name' => $temp['name']);
    $new2 = array('id' => $temp['id'], 'class' => $temp['class']);
}

答案 1 :(得分:1)

使用foreach并将值添加到新数组中,例如:

$idsNames = [];
$idsClasses = [];
$items = [
    array('id' => 1, 'name' => 'abc', "class" => 'xyz'),
    array('id' => 2, 'name' => 'abc1', "class" => 'xyz1'),
    array('id' => 3, 'name' => 'abc', "class" => 'xyz2'),
];

foreach ($items as $item) {
    $idsNames[] = ["id" => $item["id"], "name" => $item["name"]];
    $idsClasses[] = ["id" => $item["id"], "class" => $item["class"]];
}