php数组如何根据相同值再分组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php数组如何根据相同值再分组相关的知识,希望对你有一定的参考价值。

Array
(
[0] => Array
(
[initial] => A
[typename] => 奥迪
)
[1] => Array
(
[initial] => F
[typename] =>F1
)
[2] => Array
(
[initial] => F
[typename] => F2
)
)
怎么根据initial相同的分到同一个里面
A
[0] => Array
(
[initial] => A
[typename] => 奥迪
)


F
[0] => Array
(
[initial] => F
[typename] =>F1
)
[1] => Array
(
[initial] => F
[typename] => F2
)

这个答案是错误的!请及时认清。我想问一下答主你是这么想的?

请查考下面的这些PHP函数
统计:
array_count_values 统计数组中所有的值出现的次数
array_product 计算数组中所有值的乘积
array_sum 计算数组中所有值的和
count 计算数组中的单元数目或对象中的属性个数
sizeof count() 的别名

搜索:
array_key_exists 检查给定的键名或索引是否存在于数组中
array_search 在数组中搜索给定的值,如果成功则返回相应的键名
in_array 检查数组中是否存在某个值

排序:
array_multisort 对多个数组或多维数组进行排序
arsort 对数组进行逆向排序并保持索引关系
asort 对数组进行排序并保持索引关系
krsort 对数组按照键名逆向排序
ksort 对数组按照键名排序
natcasesort 用“自然排序”算法对数组进行不区分大小写字母的排序
natsort 用“自然排序”算法对数组排序
rsort 对数组逆向排序
sort 对数组排序
uasort 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
uksort 使用用户自定义的比较函数对数组中的键名进行排序
usort 使用用户自定义的比较函数对数组中的值进行排序
shuffle 将数组打乱

交集:
array_intersect_assoc 带索引检查计算数组的交集
array_intersect_key 使用键名比较计算数组的交集
array_intersect_uassoc 带索引检查计算数组的交集,用回调函数比较索引
array_intersect_ukey 用回调函数比较键名来计算数组的交集
array_intersect 计算数组的交集
array_key_exists 用回调函数比较键名来计算数组的交集
array_uintersect_assoc 带索引检查计算数组的交集,用回调函数比较数据
array_uintersect 计算数组的交集,用回调函数比较数据

差集:
array_udiff_assoc 带索引检查计算数组的差集,用回调函数比较数据
array_udiff_uassoc 带索引检查计算数组的差集,用回调函数比较数据和索引
array_udiff 用回调函数比较数据来计算数组的差集
array_diff_assoc 带索引检查计算数组的差集
array_diff_key 使用键名比较计算数组的差集
array_diff_uassoc 用用户提供的回调函数做索引检查来计算数组的差集
array_diff_ukey 用回调函数对键名比较计算数组的差集
array_diff 计算数组的差集

获取数组的部分内容:
array_chunk 将一个数组分割成多个
array_filter 用回调函数过滤数组中的单元
array_keys 返回数组中所有的键名
array_slice 从数组中取出一段
array_values 返回数组中所有的值

加工出所需数组:
array_combine 创建一个数组,用一个数组的值作为其键名,另一个数组的值作 为其值
array_fill 用给定的值填充数组
array_flip 交换数组中的键和值
array_map 将回调函数作用到给定数组的单元上
array_merge_recursive 递归地合并一个或多个数组
array_merge 合并一个或多个数组
array_pad 用值将数组填补到指定长度
array_push 将一个或多个单元压入数组的末尾(入栈)
array_reverse 返回一个单元顺序相反的数组
array_shift 将数组开头的单元移出数组
array_splice 把数组中的一部分去掉并用其它值取代
array_unique 移除数组中重复的值
array_unshift 在数组开头插入一个或多个单元
array_walk_recursive 对数组中的每个成员递归地应用用户函数
array_walk 对数组中的每个成员应用用户函数
compact 建立一个数组,包括变量名和它们的值
range 建立一个包含指定范围单元的数组

单元:
array_pop 将数组最后一个单元弹出(出栈)
array_rand 从数组中随机取出一个或多个单元
current 返回数组中的当前单元
pos current() 的别名
each 返回数组中当前的键/值对并将数组指针向前移动一步
end 将数组的内部指针指向最后一个单元
key 返回数组中当前单元的键名
list 把数组中的值赋给一些变量
next 将数组中的内部指针向前移动一位
prev 将数组的内部指针倒回一位
reset 将数组的内部指针指向第一个单元

其他:
array_reduce 用回调函数迭代地将数组简化为单一的值
extract 从数组中将变量导入到当前的符号表
array 新建一个数组
参考技术A $arr = array
(
    0 => array
        (
            'initial' => 'A',
            'typename' => '奥迪'
        ),
    1 => array
        (
            'initial' => 'F',
            'typename' =>'F1'
        ),
    2 => array
        (
            'initial' => 'F',
            'typename' => 'F2'
        )
);
$result = array();
foreach($arr as $k=>$v)
$result[$v['initial']][] = $v;


//得到的$result就包括你需要的内容了

本回答被提问者采纳
参考技术B <?php
header("Content-type:text/html;charset=utf-8");
$a = array
(
    0 => array
        (
            'initial' => 'A',
            'typename' => '奥迪',
        ),
    1 => array
        (
            'initial' => 'F',
            'typename' =>'F1',
        ),
    2 => array
        (
            'initial' => 'F',
            'typename' => 'F2',
        ),
);

$res = array();
foreach($a as $k=>$v)
$res[$v['initial']][] = $v;

print_r($res);

拆分多维数组和分组到关联数组在php中具有相同的字段

我的阵列是这样的

$array = array(
  ['NAME[0]'=>'RAM','STD[0]'=>'4','SEC[0]'=>'A'],
  ['NAME[1]'=>'RAJ','STD[1]'=>'3','SEC[1]'=>'B'–]
);

我想像这样分开

$name = array('NAME[0]'=> 'RAM',NAME[1]=>'RAJ');
$std = array('STD[0]'=> '4',STD[1]=>'3');
$name = array('SEC[0]'=> 'A',SEC[1]=>'B');
答案

尝试一下这个

$array=array(
            array('NAME[0]'=>'RAM','STD[0]'=>'4','SEC[0]'=>'A'),
            array('NAME[1]'=>'RAJ','STD[1]'=>'3','SEC[1]'=>'B')
 );

$name = array();
$STD = array();
$SEC = array();

foreach($array as $vals) {    

      $i = 0;
      foreach($vals as $key => $value) { 

               if($i == 0){
                   $name[$key] = $value;
               }elseif($i == 1){
                   $STD[$key] = $value;
               }elseif($i ==2){
                   $SEC[$key] = $value;
               }                

            $i++;   
      }     
}

print_r($name);
print_r($STD);
print_r($SEC);
另一答案

试试这个:

$arr = [
    array(
        'NAME' => 'RAM',
        'STD' => '4',
        'SEC' => 'A',
    ),
    array(
        'NAME' => 'RAJ',
        'STD' => '3',
        'SEC' => 'B',
    )
];
$names = [];
$stds = [];
$secs = [];

foreach ($arr as $value) {
    array_push($names, array('NAME' => $value['NAME']));
    array_push($stds, array('STD' => $value['STD']));
    array_push($secs, array('SEC' => $value['SEC']));
}
另一答案

你可以使用http://php.net/manual/fr/function.array-column.php

<?php

$records = array(
    array(
        'id' => 2135,
        'first_name' => 'John',
        'last_name' => 'Doe',
    ),
    array(
        'id' => 3245,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
    ),
    array(
        'id' => 5342,
        'first_name' => 'Jane',
        'last_name' => 'Jones',
    ),
    array(
        'id' => 5623,
        'first_name' => 'Peter',
        'last_name' => 'Doe',
    )
);

$first_names = array_column($records, 'first_name');
print_r($first_names);
?>

会给你

Array
(
   [0] => John
   [1] => Sally
   [2] => Jane
   [3] => Peter
)

或者你可以使用extract()函数

https://www.w3schools.com/php/func_array_extract.asp

以上是关于php数组如何根据相同值再分组的主要内容,如果未能解决你的问题,请参考以下文章

根据php中的键对数组值进行分组?

拆分多维数组和分组到关联数组在php中具有相同的字段

PHP JSON 按相同值分组

如何根据相同的值对数组进行分组

php数组根据键名怎么合并呢

php数组实现根据某个键值将相同键值合并生成新二维数组的方法