PHP 扁平化数组
作者:迹忆客
最近更新:2023/03/15
浏览次数:
扁平化数组意味着将多维数组转换为一维数组。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()
函数变平,该函数将两个数组合二为一。
相关文章
如何在 PHP 中获取时间差的分钟数
发布时间:2023/03/29 浏览次数:183 分类:PHP
-
本文介绍了如何在 PHP 中获取时间差的分钟数,包括 date_diff()函数和数学公式。它包括 date_diff()函数和数学公式。