【问题标题】:Reduce the dimensions of a multidimensional array减少多维数组的维度
【发布时间】:2013-04-15 17:00:18
【问题描述】:

我在遍历这一系列产品信息时遇到了麻烦,并希望得到每个项目的回显谷歌电子商务跟踪代码的结果。如何将维度减少一。总之——

如何转这个:

Array (
    [array] => Array (
        [0] => Array (
            [product_id] => 7
            [prod_count] => 1
            [price] => 19.99
        )
        [1] => Array (
            [product_id] => 6
            [prod_count] => 3
            [price] => 19.99
        )
        [2] => Array (
            [product_id] => 5
            [prod_count] => 2
            [price] => 19.99
        )
        [3] => Array (
            [product_id] => 4
            [prod_count] => 4
            [price] => 14.99
        )
        [4] => Array (
            [product_id] => 3
            [prod_count] => 5
            [price] => 19.99
        )
    )
 )

进入这个:

 Array (
            [0] => Array (
                [product_id] => 7
                [prod_count] => 1
                [price] => 19.99
            )
            [1] => Array (
                [product_id] => 6
                [prod_count] => 3
                [price] => 19.99
            )
            [2] => Array (
                [product_id] => 5
                [prod_count] => 2
                [price] => 19.99
            )
            [3] => Array (
                [product_id] => 4
                [prod_count] => 4
                [price] => 14.99
            )
            [4] => Array (
                [product_id] => 3
                [prod_count] => 5
                [price] => 19.99
            )
        )

【问题讨论】:

  • 我不是 PHP 向导,但也许您可以将产品信息(product_id、prod_count、price)封装到一个对象中,然后将它们组成一个集合(数组)?那么你就只有一个“维度”需要处理了。

标签: php multidimensional-array foreach


【解决方案1】:
<?php
// Let's say this is your big array:
/*Array (
    [array] => Array (
        [0] => Array (
            [product_id] => 7
            [prod_count] => 1
            [price] => 19.99
        )
        [1] => Array (
            [product_id] => 6
            [prod_count] => 3
            [price] => 19.99
        )
        [2] => Array (
            [product_id] => 5
            [prod_count] => 2
            [price] => 19.99
        )
        [3] => Array (
            [product_id] => 4
            [prod_count] => 4
            [price] => 14.99
        )
        [4] => Array (
            [product_id] => 3
            [prod_count] => 5
            [price] => 19.99
        )
    )
 )*/

$littlearray = $bigarray['array'];
?>

【讨论】:

    【解决方案2】:
    $arr = array(
       "withinArray" => array(
           "withinMoreArray" => array(
               "andEvenMoreArray" => array(
               )
           )
       )
    );
    
    $arr = current($arr);
    // OR
    $arr = $arr['withinArray'];
    

    【讨论】:

      【解决方案3】:

      这个例子的明显答案是:

      $array = $array['array'];
      

      但是,假设有多个数组作为一级:

      $array = call_user_func_array('array_merge',$array);
      

      【讨论】:

      • 你救了我的一天。现在我可以轻松地遍历它们并回显谷歌跟踪代码。我可以请你喝杯咖啡吗?
      • 哈,那很难,我怀疑我们甚至共享一个时区.. 但还是欢迎你:)
      猜你喜欢
      • 1970-01-01
      • 2018-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-27
      • 1970-01-01
      • 2022-10-14
      相关资源
      最近更新 更多