接下来我们来介绍一下如何实现一维数组转二维数组的方法。
方法一:使用 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 一维数组转二维数组的详细内容。
