迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > PHP >

PHP 扁平化数组

作者:迹忆客 最近更新:2023/03/15 浏览次数:

扁平化数组意味着将多维数组转换为一维数组。PHP 有不同的方法来展平数组,我们将在这里讨论它们。

在 PHP 中使用 RecursiveiteratoriteratorRecursivearrayiterator 操作展平数组

SPL 库具有用于展平多维数组的迭代器。我们使用了两个迭代器,RecursiveIteratorIteratorRecursiveArrayIterator,来操作展平数组。

<?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() 函数变平,该函数将两个数组合二为一。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 PHP 中获取时间差的分钟数

发布时间:2023/03/29 浏览次数:183 分类:PHP

本文介绍了如何在 PHP 中获取时间差的分钟数,包括 date_diff()函数和数学公式。它包括 date_diff()函数和数学公式。

PHP 中的重定向

发布时间:2023/03/29 浏览次数:136 分类:PHP

本教程演示了如何将用户从页面重定向到 PHP 中的其他页面

PHP 分页

发布时间:2023/03/29 浏览次数:66 分类:PHP

本教程介绍如何在 PHP 中对数据库行进行分页

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便