Php 按类别分组数组
我在使用键对数组进行分组时遇到问题:- 我有一个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' =>
$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;
}
}