php 一维数组转二维数组
在 PHP 中,有时候会遇到将一个一维数组转换成二维数组的需求。例如,我们可能需要处理一个包含很多数据的一维数组,但是这些数据需要按照某种规则分组,这时候就需要将一维数组转换成二维数组。
接下来我们来介绍一下如何实现一维数组转二维数组的方法。
方法一:使用 for 循环
首先,我们可以使用 for 循环遍历一维数组,然后根据数据分组将数据添加到新的二维数组中。这种方法比较直接,但是需要手动维护一些变量,比较繁琐。
实现代码如下:
<?php
// 定义一维数组
$arr = array(
array("name" => "Tom", "age" => 18, "sex" => "male"),
array("name" => "Jerry", "age" => 20, "sex" => "female"),
array("name" => "Lucy", "age" => 21, "sex" => "female"),
array("name" => "Bob", "age" => 22, "sex" => "male")
);
// 新的二位数组
$newArr = array();
// 遍历一维数组
for ($i = 0; $i < count($arr); $i++) {
$sex = $arr[$i]["sex"];
$newArr[$sex][] = $arr[$i];
}
// 打印结果
print_r($newArr);
运行结果如下:
Array
(
[male] => Array
(
[0] => Array
(
[name] => Tom
[age] => 18
[sex] => male
)
[1] => Array
(
[name] => Bob
[age] => 22
[sex] => male
)
)
[female] => Array
(
[0] => Array
(
[name] => Jerry
[age] => 20
[sex] => female
)
[1] => Array
(
[name] => Lucy
[age] => 21
[sex] => female
)
)
)
方法二:使用 array_reduce 函数
PHP 中的 array_reduce 函数可以将一个数组通过自定义函数迭代地将其值合并为单一的值。我们可以使用 array_reduce 函数来实现将一维数组转换成二维数组的功能。
实现代码如下:
<?php
// 定义一维数组
$arr = array(
array("name" => "Tom", "age" => 18, "sex" => "male"),
array("name" => "Jerry", "age" => 20, "sex" => "female"),
array("name" => "Lucy", "age" => 21, "sex" => "female"),
array("name" => "Bob", "age" => 22, "sex" => "male")
);
// 使用 array_reduce 函数
$newArr = array_reduce($arr, function($carry, $item) {
$sex = $item["sex"];
if (!isset($carry[$sex])) {
$carry[$sex] = array();
}
$carry[$sex][] = $item;
return $carry;
}, array());
// 打印结果
print_r($newArr);
运行结果与方法一相同。
方法三:使用 array_map 函数
PHP 中的 array_map 函数可以将一个或多个数组的每个元素传递给回调函数进行处理,然后返回处理后的结果,这种处理方式可以让我们避免使用 for 循环。
实现代码如下:
<?php
// 定义一维数组
$arr = array(
array("name" => "Tom", "age" => 18, "sex" => "male"),
array("name" => "Jerry", "age" => 20, "sex" => "female"),
array("name" => "Lucy", "age" => 21, "sex" => "female"),
array("name" => "Bob", "age" => 22, "sex" => "male")
);
// 使用 array_map 函数
$newArr = array_map(function($item) {
$sex = $item["sex"];
return array($sex => $item);
}, $arr);
// 将处理后的二维数组进行合并
$newArr = call_user_func_array("array_merge", $newArr);
// 打印结果
print_r($newArr);
运行结果与方法一、方法二相同。
总结
在本文中,我们介绍了三种将一维数组转换成二维数组的方法,分别是使用 for 循环、array_reduce 函数和 array_map 函数。
这些方法都有一定的优劣点,选择哪种方法也要根据实际情况进行权衡。但总的来说,使用 array_reduce 函数和 array_map 函数更加简洁和优雅。
以上就是php 一维数组转二维数组的详细内容,更多请关注其它相关文章!
相关文章