PHP 扁平化数组
-
在 PHP 中使用
Recursiveiteratoriterator
和Recursivearrayiterator
操作展平数组 -
在 PHP 中使用
array_walk_recursive
展平多维数组 -
在 PHP 中使用
for
循环展平多维数组 -
在 PHP 中使用
while
循环展平多维数组 -
在 PHP 中使用
foreach
循环展平多维数组
扁平化数组意味着将多维数组转换为一维数组。PHP 有不同的方法来展平数组,我们将在这里讨论它们。
在 PHP 中使用 Recursiveiteratoriterator
和 Recursivearrayiterator
操作展平数组
SPL 库具有用于展平多维数组的迭代器。我们使用了两个迭代器,RecursiveIteratorIterator
和 RecursiveArrayIterator
,来操作展平数组。
<?php
$demo_array = array('a', 'b', 'c', 'd', array('e', 'f', 'g', 'h', array('i', 'j', 'k'), 'l', 'm', 'n', 'o'), 'p', 'q', 'r', 's');
$iter_object = new RecursiveIteratorIterator(new RecursiveArrayIterator($demo_array));
$flatten_array= array();
foreach($iter_object as $value) {
array_push($flatten_array,$value);
}
print_r($flatten_array);
?>
输出:
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => g [7] => h [8] => i [9] => j [10] => k [11] => l [12] => m [13] => n [14] => o [15] => p [16] => q [17] => r [18] => s )
该代码包含一个三层数组,该数组将被展平为一维数组。
在 PHP 中使用 array_walk_recursive
展平多维数组
内置函数 array_walk_recursive
可以与闭包函数一起使用,以展平 PHP 中的多维数组。
<?php
function flatten_array(array $demo_array) {
$new_array = array();
array_walk_recursive($demo_array, function($array) use (&$new_array) { $new_array[] = $array; });
return $new_array;
}
$demo_array = array('a', 'b', 'c', 'd', array('e', 'f', 'g', 'h', array('i', 'j', 'k'), 'l', 'm', 'n', 'o'), 'p', 'q', 'r', 's');
$new_array = flatten_array($demo_array);
print_r($new_array);
?>
输出:
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => g [7] => h [8] => i [9] => j [10] => k [11] => l [12] => m [13] => n [14] => o [15] => p [16] => q [17] => r [18] => s )
带有闭包函数的 array_walk_recursive
将给定的多维数组展平。
在 PHP 中使用 for
循环展平多维数组
我们可以使用 for
循环来展平多维数组;可能需要额外的内置函数。
<?php
function flatten_array($demo_array,$new_array) {
for($i = 0; $i < count($demo_array); $i++) {
if(is_array($demo_array[$i])) {
$new_array = flatten_array($demo_array[$i], $new_array);
}
else {
if(isset($demo_array[$i])) {
$new_array[] = $demo_array[$i];
}
}
}
return $new_array;
}
$demo_array = array('a', 'b', 'c', 'd', array('e', 'f', 'g', 'h', array('i', 'j', 'k'), 'l', 'm', 'n', 'o'), 'p', 'q', 'r', 's');
print_r(flatten_array($demo_array, array()));
?>
输出:
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => g [7] => h [8] => i [9] => j [10] => k [11] => l [12] => m [13] => n [14] => o [15] => p [16] => q [17] => r [18] => s )
上面的代码将通过在 for
循环的帮助下迭代给定数组来生成一个扁平数组。
在 PHP 中使用 while
循环展平多维数组
<?php
function flatten_array ($demo_array){
$x = 0;
while ($x < count ($demo_array)){
while (is_array ($demo_array[$x])){
if (!$demo_array[$x]){
array_splice ($demo_array, $x, 1);
--$x;
break;
}
else{
array_splice ($demo_array, $x, 1, $demo_array[$x]);
}
}
++$x;
}
return $demo_array;
}
$demo_array = array('a', 'b', 'c', 'd', array('e', 'f', 'g', 'h', array('i', 'j', 'k'), 'l', 'm', 'n', 'o'), 'p', 'q', 'r', 's');
print_r(flatten_array($demo_array));
?>
输出:
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => g [7] => h [8] => i [9] => j [10] => k [11] => l [12] => m [13] => n [14] => o [15] => p [16] => q [17] => r [18] => s )
给定的数组在 while
循环和 array_splice
函数的帮助下变平,该函数用于删除数组的一部分并将其替换为其他内容。
在 PHP 中使用 foreach
循环展平多维数组
<?php
function flatten_array($demo_array) {
if (!is_array($demo_array)) {
// make sure the input is an array
return array($demo_array);
}
$new_array = array();
foreach ($demo_array as $value) {
$new_array = array_merge($new_array, flatten_array($value));
}
return $new_array;
}
$demo_array = array('a', 'b', 'c', 'd', array('e', 'f', 'g', 'h', array('i', 'j', 'k'), 'l', 'm', 'n', 'o'), 'p', 'q', 'r', 's');
print_r(flatten_array($demo_array));
?>
输出:
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => g [7] => h [8] => i [9] => j [10] => k [11] => l [12] => m [13] => n [14] => o [15] => p [16] => q [17] => r [18] => s )
给定的数组使用 foreach
循环和 array_merge()
函数变平,该函数将两个数组合二为一。
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook