PHP将multidimensionl数组拆分为与数组匹配的数组块

时间:2016-05-12 13:34:48

标签: php arrays multidimensional-array

我有一个大的多维数组,我从数据库中获取了图片位置

Array
(
    [0] => Array
        (
            [name] => 01.jpg
            [album] => /images/beach
        )

    [1] => Array
        (
            [name] => 02.jpg
            [album] => /images/beach
        )
    [2] => Array
        (
            [name] => 03.jpg
            [album] => /images/home
        )
)

我正在尝试将其拆分为与相册匹配的较小数组,如下所示:

Array
(
    [0] => Array
        (
            [name] => 01.jpg
            [album] => /images/beach
        )

    [1] => Array
        (
            [name] => 02.jpg
            [album] => /images/beach
        )
)
Array
(
    [0] => Array
        (
            [name] => 03.jpg
            [album] => /images/home
        )
 )

什么是好的方法呢?我想把第一个值转换成一个新数组,直到我到达终点,但必须有一个更有效的方法。

2 个答案:

答案 0 :(得分:0)

我会这样做。

$albums = array();
foreach ($dbrows as $dbrow) {
    $albums[$dbrow['album']][] = $dbrow;
}
unset($dbrows);
var_dump($albums);

答案 1 :(得分:0)

您可以使用album作为密钥创建新阵列,您需要将其分组,然后根据需要使用array_values更新密钥。

<?php
$arrays = array
(
    '0' => array
        (
            'name' => '01.jpg',
            'album' => '/images/beach'
        ),

    '1' => array
        (
            'name' => '02.jpg',
            'album' => '/images/beach'
        ),
    '2' => array
        (
            'name' => '03.jpg',
            'album' => '/images/home'
        )
);
$results = array();
foreach($arrays as $array){
    $results[$array['album']][] = $array;
}
$results = array_values($results);
print_r($results);

演示:https://eval.in/569788