×

php二维数组变三维数组

php二维数组变三维数组(php二维数组的遍历)

admin admin 发表于2023-04-02 13:42:08 浏览47 评论0

抢沙发发表评论

本文目录一览:

PHP数组合并问题,二维数组合并成三位数组

?php

$result=array(

    array

        (

            "id" = 5,

            "activity_id" = 2,

            "applyid" = 5,

            "signedtime" = 1463056411,

            "typeid" = 1,

            "name" = '王',

        ),

    array

        (

            "id" = 6,

            "activity_id" = 2,

            "applyid" = 5,

            "signedtime" = 1463066411,

            "typeid" = 2,

            "name" = '王',

        ),

    array

        (

            "id" = 8,

            "activity_id" = 2,

            "applyid" = 5,

            "signedtime" = 1463066411,

            "typeid" = 4,

            "name" = '王',

        ),

    array

        (

            "id" = 9,

            "activity_id" = 2,

            "applyid" = 6,

            "signedtime" = 1463066411,

            "typeid" = 4,

            "name" = 'zhang',

        )

);

//print_r($result);

$new_rst = array();

$keys    = array();

foreach($result as $arr){

    $_arr  = $arr;

    unset($_arr["signedtime"], $_arr["typeid"]);

    $vals1  = $_arr;

    unset($_arr["id"]);

    $key = implode('-', $_arr);

    if(isset($keys[$key])){

        $_arr = $new_rst[$key];

        $_arr['signed'][] = array($arr["signedtime"], $arr["typeid"]);

        $new_rst[$key] = $_arr;

    } else {

        $_arr['signed'][] = array($arr["signedtime"], $arr["typeid"]);

        $new_rst[$key] = $_arr;

        $keys[$key] = true;

    }

    

}

$new_rst = array_values($new_rst);

print_r($new_rst);

exit;

求解 PHP 二维数组生成三位数组的方法?

PHP的array_map函数是个很有趣的函数。

?php

    $arr = array (

        array('水果','香蕉','2斤'),

        array('水果','苹果','6斤'),

        array('水果','梨','4斤'),

        array('水果','水蜜桃','8斤'),

        array('水果','橙子','5斤'),

        array('水果','西瓜','3斤'),

        array('蔬菜','芹菜','1斤'),

        array('蔬菜','辣椒','5斤'),

        array('蔬菜','西葫芦','7斤'),

        array('蔬菜','豆芽','4斤'),

        array('蔬菜','菜花','2斤')

    );

    

    $_arr = array();

    foreach($arr as $k=$v)

        foreach($v as $_k=$_v)

            $_arr[$_k][] = $_v;

    $_arr = array_map(null,$_arr[0],$_arr[1],$_arr[2]);

    $arr = array();

    foreach($_arr as $k=$v)

        $arr[$v[0]][] = $v;

    $arr = array_values($arr);

    var_dump($arr);

?

php将二维数组值数组里某一个键值一样的拼装成一个三维数组

?php

    $indexArr = array();

    $newArr = array();

    foreach ($sourceArr as $v) {

        // 判断该order_id是否已经存在于新数组中

        if (array_key_exists($v['order_id'], $indexArr)) {

            // 获取该order_id在新数组中的位置

            $k = $indexArr[$v['order_id']];

            // 如果该部分没有被加维

            if (!array_key_exists('order_id', $newArr[$k])) { 

                // 加维,并且将这一条记录插入 

                $newArr[$k] = array($newArr[$k], $v);  

            } else {

                array_push($newArr[$k], $v);

            }

        } else {

            $key = count($newArr);  // 插入新数组的位置

            array_push($newArr, $v);

            // 建立一个order_id对应其在新数组中位置的索引数组

            $indexArr[$v['order_id']] = $key;  

        }

    }

这是按照你要的结构给你组织的。不过你要的结构可能并不方便你进行处理,因为订单号相同的记录比订单号唯一的记录维度要深一层,如果你要维度相同的话,可以这么做

$indexArr = array();

$newArr = array();

foreach ($sourceArr as $v) {

    if (array_key_exists($v['order_id'], $indexArr)) {

        $k = $indexArr[$v['order_id']];

        array_push($newArr[$k], $v);

    } else {

        $key = count($newArr);

        array_push($newArr, array($v));

        $indexArr[$v['order_id']] = $key;

    }

}

PHP 二维数组变三维数组

$a="上面的数组";

$b=array();

for($i=0;$icount($a);$i++){

$b[$a[$i]['Id']]['Phone'][]=$a[$i]['Phone']

if(!empty($b[$a[$i]['Id']]['Id'])){

if($b[$a[$i]['Id']]['Id']==$a[$i]['Id']) continue;

}else{

$b[$a[$i]['Id']]['Key']=$a[$i]['Key'];

$b[$a[$i]['Id']]['Id']=$a[$i]['Id'];

$b[$a[$i]['Id']]['name']=$a[$i]['name'];

}

}