일반적인 프로젝트 개발에서는 다차원 배열을 1차원 배열로 변환하는 상황을 자주 사용하는데, 많은 프로그래머가 이를 변환하지 않고, 좋은 알고리즘을 생각하지 못하고 난잡한 계산 방법을 사용하는 경우도 있습니다. 간신히 변환을 잘 하지만 작성된 프로그램 코드가 너무 중복되어 프로그램의 시간 복잡도와 공간 복잡도가 매우 커집니다. 아래에서는 이러한 상황을 어떻게 달성했는지 설명할 것이며 코드는 간단하고 명확합니다.
구현 방법:
Ⅰ 재귀 호출을 사용합니다.
Ⅱ 먼저 결과를 저장하기 위해 정적 배열 상수를 정의합니다.
IV 판단 배열, 재귀 호출 메서드인 경우
Ⅴ 그렇지 않은 경우 결과를 정적 배열 상수에 넣습니다.
Ⅵ 결과를 반환합니다(정적 배열 상수).
<?php /** * ======================================= * Created by Zhihua_W. * Author: Zhihua_W * Date: 2016/11/28 0003 * Time: 上午 9:11 * Project: PHP开发小技巧 * Power: 实现多维数组转化为一维数组 * ======================================= */ /** * 多维数组转化为一维数组 * @param array $array 多维数组 * @return array $result_array 一维数组 */ function array_multi2single($array) { //首先定义一个静态数组常量用来保存结果 static $result_array = array(); //对多维数组进行循环 foreach ($array as $value) { //判断是否是数组,如果是递归调用方法 if (is_array($value)) { array_multi2single($value); } else //如果不是,将结果放入静态数组常量 $result_array [] = $value; } //返回结果(静态数组常量) return $result_array; } $arr = array( array( 'name' => 'a', 'sex' => 'm', 'sort' => 5 ), array( 'name' => 'c', 'sex' => 'm', 'sort' => 8 ), array( 'name' => 'g', 'sex' => 'm', 'sort' => 3 ), array( 'name' => 'e', 'sex' => 'w', 'sort' => 6 ), array( 'name' => 'b', 'sex' => 'w', 'sort' => 2 ), ); print_r(array_multi2single($arr)); ?>
Array ( [0] => a [1] => m [2] => 5 [3] => c [4] => m [5] => 8 [6] => g [7] => m [8] => 3 [9] => e [10] => w [11] => 6 [12] => b [13] => w [14] => 2 )
위 내용은 PHP 개발 스킬(3) - 다차원 배열을 1차원 배열로 변환하는 자세한 코드 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!