3個(gè)PHP多維數(shù)組轉(zhuǎn)為一維數(shù)組的方法實(shí)例

字號(hào):


    這篇文章主要介紹了3個(gè)PHP多維數(shù)組轉(zhuǎn)為一維數(shù)組的方法實(shí)例,分別使用foreach、for、while三種循環(huán)方法來(lái)實(shí)現(xiàn),需要的朋友可以參考下
    很多時(shí)候我們需要將多維數(shù)組轉(zhuǎn)成一維數(shù)組,因?yàn)槲覀冎恍枰痪S數(shù)組,而且一維數(shù)組使用起來(lái)更方便,在PHP中如何將多維數(shù)組轉(zhuǎn)成一維數(shù)組?下面我們來(lái)看看三個(gè)多維數(shù)組轉(zhuǎn)為一維數(shù)組例子:
    一、使用foreach
    代碼如下:
    <?php
    function arr_foreach ($arr)
    {
    static $tmp=array();
    if (!is_array ($arr))
    {
    return false;
    }
    foreach ($arr as $val )
    {
    if (is_array ($val))
    {
    arr_foreach ($val);
    }
    else
    {
    $tmp[]=$val;
    }
    }
    return $tmp;
    }
    $a = array(1,2=>array(3,4=>array(5,6)),7);
    print_r(arr_foreach($a));
    ?>
    二、使用for循環(huán),只能遍歷數(shù)字下標(biāo)的數(shù)組
    代碼如下:
    <?php
    function arr_foreach($arr)
    {
    static $tmp=array();
    for($i=0; $i<count($arr); $i++)
    {
    if(is_array($arr[$i]))
    {
    arr_foreach($arr[$i]);
    }else{
    $tmp[]=$arr[$i];
    }
    }
    return $tmp;
    }
    //調(diào)用例子
    $a = array(1,array(3,array(5,6)),7);
    print_r(arr_foreach($a));
    ?>
    三、使用while
    代碼如下:
    /**
    * 將多維數(shù)組轉(zhuǎn)為一維數(shù)組
    * @author echo
    * @link http://www.ynpxrz.com/
    * @param array $arr
    * @return array
    */
    function ArrMd2Ud($arr) {
    #將數(shù)值第一元素作為容器,作地址賦值。
    $ar_room = &$arr[key($arr)];
    #第一容器不是數(shù)組進(jìn)去轉(zhuǎn)呀
    if (!is_array($ar_room)) {
    #轉(zhuǎn)為成數(shù)組
    $ar_room = array($ar_room);
    }
    #指針下移
    next($arr);
    #遍歷
    while (list($k, $v) = each($arr)) {
    #是數(shù)組就遞歸深挖,不是就轉(zhuǎn)成數(shù)組
    $v = is_array($v) ? call_user_func(__FUNCTION__, $v) : array($v);
    #遞歸合并
    $ar_room = array_merge_recursive($ar_room, $v);
    #釋放當(dāng)前下標(biāo)的數(shù)組元素
    unset($arr[$k]);
    }
    return $ar_room;
    }
    調(diào)用示例:
    代碼如下:
    $arr = array(1, 2, 3 => array(1, 2, 'ar' => array(1, 2 => array('a', 'b'))), array('ar' => array(3, 4)));
    print_r(ArrMd2Ud($arr));
    輸出:
    代碼如下:
    Array
    (
    [0] => 1
    [1] => 2
    [2] => 1
    [3] => 2
    [4] => 1
    [5] => a
    [6] => b
    [7] => 3
    [8] => 4
    )