php - PHP - 如何通过对数组中的相同元素进行分组来创建多维数组?
问题描述
例如,我有一个数组$tempArr
,其元素如图所示:
Array
(
[0] => 1
[1] => 1
[2] => 1
[3] => 2
[4] => 2
[5] => 2
[6] => 1
[7] => 1
[8] => 2
[9] => 2
[10] => 1
....
)
我想将其更改为具有相同元素按顺序组合在一起的多维数组结构。
Array
(
[0] => Array
(
[0] => 1
[1] => 1
[2] => 1
)
[1] => Array
(
[0] => 2
[1] => 2
[2] => 2
)
[2] => Array
(
[0] => 1
[1] => 1
)
[3] => Array
(
[0] => 2
[1] => 2
)
[4] => Array
(
[0] => 1
)
....
)
请帮忙。我已经为此工作了几个小时,但仍然无法正确处理。
解决方案
非常简单 - 只需循环遍历元素,如果当前元素与前一个元素不同 - 然后增加索引,在该索引下将值添加到输出数组。
$input = [1, 1, 1, 2, 2, 2, 1, 1, 2, 2, 1];
$output = [];
$idx = -1; // init with -1, so we get a start index of 0 after first increment
$prev = null; // init $prev with a value that won't be equal to the first
// array value in any case
foreach($input as $val) {
if($prev !== $val) {
++$idx;
}
$output[$idx][] = $val;
$prev = $val; // set current item as new previous one
}
print_r($output);
推荐阅读
- vba - 用于在 LibreCalc 中创建图表的宏 VBA,如何将标题、图例和图表主体定位到图表区域
- android - Google Play 扩展 APK
- 3d - 围绕另一个 3D 点旋转 3D 点
- c# - 基于 ASP.Net Core 弹出式身份验证?
- amazon-web-services - 在哪里保存 html 页面所需的 AWS 开发工具包配置凭证
- julia - 如何创建测试特定的 Julia 项目依赖项?
- django-rest-framework - Django Rest Framework - 如何验证来宾用户?
- django - 记录硬错误(例如 500)不起作用
- cmake - 使用 cmake 构建时禁用 RtMidi 示例
- javascript - Vuelidate VueJS 3:单选按钮验证?