转置关联数组的索引数组[重复]

问题描述 投票:0回答:3

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

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(...)
    )
php arrays transpose
3个回答
3
投票

您可以使用

array_column()

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

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


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;
?>
© www.soinside.com 2019 - 2024. All rights reserved.