PHP如何对值相同的多维数组进行分组
希望我能正确地解释这一点 我有一个多维数组得到了这个数组结果:PHP如何对值相同的多维数组进行分组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,希望我能正确地解释这一点 我有一个多维数组得到了这个数组结果: Array ( [0] => Array ( [subscription_plan_id] => 36 [transactionID] => WU3E5YRHHKMKMM3ZLLSJMNUWJM [property_id] => 1026 [plan_name] => One Mont
Array
(
[0] => Array
(
[subscription_plan_id] => 36
[transactionID] => WU3E5YRHHKMKMM3ZLLSJMNUWJM
[property_id] => 1026
[plan_name] => One Month
[plan_month] => 1
[start_date] => 2015-02-10 14:58:32
[end_date] => 2015-03-10
[active] => 1
[parent_id] => 27
)
[1] => Array
(
[subscription_plan_id] => 17
[transactionID] => WU3E5YRHHKMKMM3ZLLSJMNUWJM
[property_id] => 1026
[plan_name] => 1 Realistic Photo
[plan_month] => 1
[start_date] => 2015-02-10 14:58:32
[end_date] => 2015-03-10
[active] => 1
[parent_id] => 16
)
[2] => Array
(
[subscription_plan_id] => 15
[transactionID] => WU3E5YRHHKMKMM3ZLLSJMNUWJM
[property_id] => 1026
[plan_name] => Six months - at least twenty-four golden lists
[plan_month] => 6
[start_date] => 2015-02-10 14:58:32
[end_date] => 2015-08-10
[active] => 1
[parent_id] => 12
)
[3] => Array
(
[subscription_plan_id] => 9
[transactionID] => WU3E5YRHHKMKMM3ZLLSJMNUWJM
[property_id] => 1025
[plan_name] => One month
[plan_month] => 1
[start_date] => 2015-02-10 14:58:32
[end_date] => 2015-03-10
[active] => 1
[parent_id] => 5
)
[4] => Array
(
[subscription_plan_id] => 3
[transactionID] => WU3E5YRHHKMKMM3ZLLSJMNUWJM
[property_id] => 1025
[plan_name] => Three months
[plan_month] => 3
[start_date] => 2015-02-10 14:58:32
[end_date] => 2015-05-10
[active] => 1
[parent_id] => 1
)
)
我想按属性\u id
键进行分组:
Array
(
[0] => Array
(
[0] => Array
(
[subscription_plan_id] => 36
[transactionID] => WU3E5YRHHKMKMM3ZLLSJMNUWJM
[property_id] => 1026
[plan_name] => One Month
[plan_month] => 1
[start_date] => 2015-02-10 14:58:32
[end_date] => 2015-03-10
[active] => 1
[parent_id] => 27
)
[1] => Array
(
[subscription_plan_id] => 17
[transactionID] => WU3E5YRHHKMKMM3ZLLSJMNUWJM
[property_id] => 1026
[plan_name] => 1 Realistic Photo
[plan_month] => 1
[start_date] => 2015-02-10 14:58:32
[end_date] => 2015-03-10
[active] => 1
[parent_id] => 16
)
[2] => Array
(
[subscription_plan_id] => 15
[transactionID] => WU3E5YRHHKMKMM3ZLLSJMNUWJM
[property_id] => 1026
[plan_name] => Six months - at least twenty-four golden lists
[plan_month] => 6
[start_date] => 2015-02-10 14:58:32
[end_date] => 2015-08-10
[active] => 1
[parent_id] => 12
)
[1] => Array
(
[0] => Array
(
[subscription_plan_id] => 9
[transactionID] => WU3E5YRHHKMKMM3ZLLSJMNUWJM
[property_id] => 1025
[plan_name] => One month
[plan_month] => 1
[start_date] => 2015-02-10 14:58:32
[end_date] => 2015-03-10
[active] => 1
[parent_id] => 5
)
[1] => Array
(
[subscription_plan_id] => 3
[transactionID] => WU3E5YRHHKMKMM3ZLLSJMNUWJM
[property_id] => 1025
[plan_name] => Three months
[plan_month] => 3
[start_date] => 2015-02-10 14:58:32
[end_date] => 2015-05-10
[active] => 1
[parent_id] => 1
)
)
)
有什么想法吗?如何做到这一点
谢谢大致如下:
$groupedItems = array();
foreach($data as $item)
{
$groupedItems[$item['property_id']][] = $item;
}
// See @Lepanto's comment below, this resets the keys to match output OP required:
$groupedItems = array_values($groupedItems);
大致如下:
$groupedItems = array();
foreach($data as $item)
{
$groupedItems[$item['property_id']][] = $item;
}
// See @Lepanto's comment below, this resets the keys to match output OP required:
$groupedItems = array_values($groupedItems);
最好使用
函数()
以备将来重新使用:
/**
*
* Group sub-arrays ( of multidimensional array ) by certain key
* @return array
*
*/
function array_multi_group_by_key($input_array, $key, $remove_key = false, $flatten_output = false)
{
$output_array = [];
foreach ($input_array as $array) {
if ($flatten_output) {
$output_array[$array[$key]] = $array;
if ($remove_key) {
unset($output_array[$array[$key]][$key]);
}
} else {
$output_array[$array[$key]][] = $array;
if ($remove_key) {
unset($output_array[$array[$key]][0][$key]);
}
}
}
return $output_array;
}
我在几周前为我的项目写的,它被证明工作得很好。您不必使用$remove\u键
或展平\u输出
用法:
var_dump(array_multi_group_by_key($input_array, 'property_id'));
最好使用
函数()
以备将来重新使用:
/**
*
* Group sub-arrays ( of multidimensional array ) by certain key
* @return array
*
*/
function array_multi_group_by_key($input_array, $key, $remove_key = false, $flatten_output = false)
{
$output_array = [];
foreach ($input_array as $array) {
if ($flatten_output) {
$output_array[$array[$key]] = $array;
if ($remove_key) {
unset($output_array[$array[$key]][$key]);
}
} else {
$output_array[$array[$key]][] = $array;
if ($remove_key) {
unset($output_array[$array[$key]][0][$key]);
}
}
}
return $output_array;
}
我在几周前为我的项目写的,它被证明工作得很好。您不必使用$remove\u键
或展平\u输出
用法:
var_dump(array_multi_group_by_key($input_array, 'property_id'));
您可以使用数组\多排序
您可以使用数组\多排序
若这些数据来自数据库,则看起来像是按订阅计划id排序的。
如果是这样,您可以尝试对其重新排序,或者设置
按属性排序\u id
如果这些数据来自数据库,看起来像是按订阅计划\u id
排序。
如果是这样,您可以尝试对其重新排序或按属性设置顺序。\u id尝试以下功能:
function group_multidim_array($my_array, $group_by){
$o = array();
foreach($my_array as $subarray){
if(!is_array($subarray)){ continue; }
if(!isset($subarray[$group_by])) $subarray[$group_by] = group_multidim_array($subarray, $group_by); // recursive
if(!empty($subarray[$group_by])) $o[$subarray[$group_by]][] = $subarray;
}
return $o;
}
你这样称呼它:
$groupped_array = group_multidim_array($my_array, 'property_id');
$groupped_array = array_values($groupped_array);
如果需要索引数组,可以执行以下操作:
$groupped_array = group_multidim_array($my_array, 'property_id');
$groupped_array = array_values($groupped_array);
希望它有帮助…尝试此功能:
function group_multidim_array($my_array, $group_by){
$o = array();
foreach($my_array as $subarray){
if(!is_array($subarray)){ continue; }
if(!isset($subarray[$group_by])) $subarray[$group_by] = group_multidim_array($subarray, $group_by); // recursive
if(!empty($subarray[$group_by])) $o[$subarray[$group_by]][] = $subarray;
}
return $o;
}
你这样称呼它:
$groupped_array = group_multidim_array($my_array, 'property_id');
$groupped_array = array_values($groupped_array);
如果需要索引数组,可以执行以下操作:
$groupped_array = group_multidim_array($my_array, 'property_id');
$groupped_array = array_values($groupped_array);
希望它能帮助…可能重复的可能重复的获取此错误的可能重复:
语法错误意外的'eof'期望']'
@Mr.Happy上述代码似乎没有问题。检查codeNow代码中是否遗漏了任何关闭]
,但如何将此数组键[1026][1025]
更改为此[0][1]
。我需要重置proerty\u id
key.@Mr.Happy您可以使用$groupedItems=array\u值($groupedItems)来执行此操作代码>在foreach之后。Check@Lepanto Thank更新了我的答案以包含完整的代码获取此错误:语法错误意外的“eof”预期为“]”
@Mr.Happy上述代码似乎没有问题。检查codeNow代码中是否遗漏了任何关闭]
,但如何将此数组键[1026][1025]
更改为此[0][1]
。我需要重置proerty\u id
key.@Mr.Happy您可以使用$groupedItems=array\u值($groupedItems)来执行此操作代码>在foreach之后。检查@Lepanto Thank更新了我的答案,以包含完整的代码