将一个数组拆分为两个

时间:2014-07-09 10:13:10

标签: php arrays

我有一个像这样的日期数组

Array
(
    [0] => Array
        (
            [imageName] => WNgrRdqZ
            [alt] => alt text
        )

    [1] => Array
        (
            [imageName] => xoPS0udB
            [alt] => Alt
        )

)

我想要格式化它,所以我得到一个imageNames数组和一个alt数组。我可以简单地使用foreach循环来做到这一点,但我很好奇是否有PHP函数的构建我可以使用而不是重写其他东西。我在PHP手册中找不到任何有用的东西。

编辑:它也可以分成1个数组,有2个子数组,例如

Array
    (
        ['imageName'] => Array(..),
        ['alt'] => Array(...)
    )

3 个答案:

答案 0 :(得分:3)

您可以使用array_column()

$imageName = array_column($Array, 'imageName');
$alt = array_column($Array, 'alt');

答案 1 :(得分:0)

您可以使用array_reduce:

<?php

$data = array
(
    array
    (
        'imageName' => 'WNgrRdqZ',
        'alt' => 'alt text'
    ),

    array
    (
        'imageName' => 'xoPS0udB',
        'alt' => 'Alt'
    )
);


$reduced = array_reduce($data,function($carry, $item){
    $carry['imageName'][] = $item['imageName'];
    $carry['alt'][] = $item['alt'];
    return $carry;
},array());

print_r($reduced);

工作示例https://ideone.com/48JXvL

答案 2 :(得分:0)

请查看此代码

<?php
$arraystest = array(0 => array('imageName' => 'WNgrRdqZ', 'alt' => 'alt text'), 1 => array('imageName' => 'xoPS0udB', 'alt' => 'Alt'));
$i = 0;
$newarray = array();
foreach ($arraystest as $item) {
    $newarray['imagename'][$i] = $item['imageName'];
    $newarray['alt'][$i] = $item['alt'];
    $i++;
}

print_r($newarray);
exit;
?>