Php 按类别分组数组

Php 按类别分组数组,php,arrays,string,multidimensional-array,Php,Arrays,String,Multidimensional Array,我在使用键对数组进行分组时遇到问题:- 我有一个php数组,其中包含以下元素 $array = array( '0' => array ( 'id' => 'food,Travel', 'names' => 'chimpanzee' ), '1' => array ( 'id' => 'food', 'name' => 'meeting' ), '2' => array ( 'id' => 'Z1', 'name' =>

我在使用键对数组进行分组时遇到问题:- 我有一个php数组,其中包含以下元素

$array = array(
    '0' => array ( 'id' => 'food,Travel', 'names' => 'chimpanzee' ),
    '1' => array ( 'id' => 'food', 'name' => 'meeting' ),
    '2' => array ( 'id' => 'Z1', 'name' => 'dynasty' ),
    '3' => array ( 'id' => 'X', 'name' => 'chocolate' ),
    '4' => array ( 'id' => 'Travel', 'name' => 'bananas' ),
    '5' => array ( 'id' => 'Travel', 'name' => 'fantasy' ),
    '6' => array ( 'id' => 'Travel', 'name' => 'football' )
);
当我尝试使用以下代码时:-

$newarray= array();
foreach($array as $key => $value){
    $newarray[$value['id']][$key] = $value;
}
我在这里得到了下面的结果数组食物,旅行被创建了另一个数组,但我想请那些分别属于“食物去食物”和“旅行去旅行”类别的人

但我想得到以下结果:-食品应该归入食品类,旅游应该归入旅游类,如:-

Array
(
    [food] => Array

    (
            // Food should come at food category 
            [0] => Array
                (
                    [id] => food
                    [names] => chimpanzee
                )

        )

        (
            [1] => Array
                (
                    [id] => food
                    [name] => meeting
                )

        )

    [Z1] => Array
        (
            [2] => Array
                (
                    [id] => Z1
                    [name] => dynasty
                )

        )

    [X] => Array
        (
            [3] => Array
                (
                    [id] => X
                    [name] => chocolate
                )

        )

    [Travel] => Array
        (
            ( // Travel should come at travel category
            [0] => Array
                (
                    [id] => food
                    [names] => chimpanzee
                )

            )
            [4] => Array
                (
                    [id] => Travel
                    [name] => bananas
                )

            [5] => Array
                (
                    [id] => Travel
                    [name] => fantasy
                )

            [6] => Array
                (
                    [id] => Travel
                    [name] => football
                )

        )

)

id
,只需
分解它,检查


id
,只需
分解它,检查


没有必要像一些人建议的那样让它变得复杂,使用

您甚至可以删除
$key
,因为它们将自动递增

foreach($array as $value) {

    if(is_array(explode(",", $value["id"]))) {
        foreach(explode(",", $value["id"]) as $category) {
            $value["id"] = $category;
            $newarray[$category][] = $value;
        }
    } else {
        $newarray[$value["id"]][] = $value;
    }

}

没有必要像一些人建议的那样让它变得复杂,使用

您甚至可以删除
$key
,因为它们将自动递增

foreach($array as $value) {

    if(is_array(explode(",", $value["id"]))) {
        foreach(explode(",", $value["id"]) as $category) {
            $value["id"] = $category;
            $newarray[$category][] = $value;
        }
    } else {
        $newarray[$value["id"]][] = $value;
    }

}

数据是否来自mysql?如果是这样,您可以在查询中使用来自数据库的数据,而不是mysql。我使用的是cassandra,其中不存在group by选项。数据是否来自mysql?如果是这样,您可以在查询中使用来自数据库的数据,而不是mysql。我使用的是cassandra,其中不存在group by选项
$newarray= [];

foreach($array as $key => $value) {

    if(is_array(explode(",", $value["id"]))) {
        foreach(explode(",", $value["id"]) as $category) {
            $newarray[$category][$key] = $value;
            $newarray[$category][$key]["id"] = $category;
        }
    } else {
        $newarray[$value["id"]][$key] = $value;
    }

}

var_dump($newarray);
foreach($array as $value) {

    if(is_array(explode(",", $value["id"]))) {
        foreach(explode(",", $value["id"]) as $category) {
            $value["id"] = $category;
            $newarray[$category][] = $value;
        }
    } else {
        $newarray[$value["id"]][] = $value;
    }

}