【问题标题】:php Get all values from multidimensional associative arrayphp 从多维关联数组中获取所有值
【发布时间】:2015-09-16 21:39:48
【问题描述】:

如何从多维关联数组中获取所有值 我不想使用 print_r 想控制我的数组将所有值放在具有唯一值的普通数组中 我的数组是这样的

array (size=10)
  0 => 
    array (size=3)
      0 => 
        array (size=1)
          'Campaign' => string 'DEMO' (length=4)
      1 => 
        array (size=1)
          'Campaign' => string 'Home_Sec' (length=8)
      2 => 
        array (size=1)
          'Campaign' => string '' (length=0)
  1 => 
    array (size=0)
      empty
  2 => 
    array (size=0)
      empty
  3 => 
    array (size=1)
      0 => 
        array (size=1)
          'Campaign' => string 'Back_Brace' (length=10)
  4 => 
    array (size=2)
      0 => 
        array (size=1)
          'Campaign' => string 'Home_Sec' (length=8)
      1 => 
        array (size=1)
          'Campaign' => string '' (length=0)
  5 => 
    array (size=1)
      0 => 
        array (size=1)
          'Campaign' => string 'home_Sec_2' (length=10)
  6 => 
    array (size=1)
      0 => 
        array (size=1)
          'Campaign' => string 'Burial_Ins' (length=10)
  7 => 
    array (size=0)
      empty
  8 => 
    array (size=0)
      empty
  9 => 
    array (size=0)
      empty

我不想使用 print_r 想控制我的数组将所有值放入具有唯一值的普通数组中

【问题讨论】:

    标签: php multidimensional-array associative-array


    【解决方案1】:

    array_walk 是一个选项,但是如果您想尝试自己编写更多代码,可以递归地解决此问题

    ,这是另一个选项

    这会将 任何 n-max 级别数组展平为一个数组,其中包含所有子数组的所有值(包括初始数组本身)

    <?php
    $array = array(
    1 => array(1, 2, 3, 4 => array(
    1, 2, 3, 4
    )),
    4, 5);
    function recurse_values($array) {
        if (is_array($array)) {
            $output_array = array();
            foreach ($array as $key=>$val) {
                $primitive_output = recurse_values($val);
                if (is_array($primitive_output)) {
                    $output_array = array_merge($output_array, $primitive_output);
                }
                else {
                    array_push($output_array, $primitive_output);
                }
            }
            return $output_array;
        }
        else {
            return $array;
        }
    }
    print_r(recurse_values($array));
    ?>
    

    如果您需要唯一值,可以在最后添加 array_unique 来执行此操作。

    【讨论】:

    • 谢谢,但@Machavity 的解决方案更适合我
    【解决方案2】:

    您可以使用array_walk

    $array = array(...); //your values here
    function output($item, $key) {
         echo $key . ' =>' . $item;
    }
    array_walk($array, 'output');
    

    【讨论】:

    • 它给了我这个值 0 =>Array1 =>Array2 =>Array3 =>Array4 =>Array5 =>Array6 =>Array7 =>Array8 =>Array9 =>Array
    • 感谢您的代码很好但在我的情况下需要使用 array_walk_recursive 的线索,谢谢
    【解决方案3】:

    您是在问如何将这个多维数组“展平”为一维?类似问题的可能解决方案...How to Flatten a Multidimensional Array?

    【讨论】:

    • 是的,这将是解决方案之一,可以告诉我如何
    • 编辑了类似问题的链接。我个人喜欢“太多 php”的第二种解决方案
    猜你喜欢
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 2018-10-27
    相关资源
    最近更新 更多