【问题标题】:Convert array of single-element arrays to one a dimensional array将单元素数组的数组转换为一维数组
【发布时间】:2012-02-04 00:20:06
【问题描述】:

我有这种数组:

Array
(
    [0] => Array
        (
            [0] => 88868
        )
    [1] => Array
        (
            [0] => 88867
        )
    [2] => Array
        (
            [0] => 88869
        )
    [3] => Array
        (
            [0] => 88870
        )
)

我需要将其转换为一维数组。我该怎么做?

例如这样..

Array
(
    [0] => 88868
    [1] => 88867
    [2] => 88869
    [3] => 88870 
)

任何 php 内置功能都可用于此数组转换?

【问题讨论】:

    标签: php arrays multidimensional-array flatten array-column


    【解决方案1】:

    对于您有限的用例,这样就可以了:

    $oneDimensionalArray = array_map('current', $twoDimensionalArray);
    

    当子数组有很多条目时,这可以更概括:

    $oneDimensionalArray = call_user_func_array('array_merge', $twoDimensionalArray);
    

    【讨论】:

    • 我不明白“当前”。我在 doc php callable $callback 上看到,但在示例中看不到此功能或代码。我很欣赏一些例子。
    • @abkrim current() 函数返回数组中当前元素的值。例如:$fruits = array("banana", "apple", "orange"); echo current($fruits) //将返回“banana”,因为当前指针位于索引 0 上,即香蕉。
    【解决方案2】:

    是的。

    $values = array(array(88868), array(88867), array(88869), array(88870));
    foreach ($values as &$value) $value = $value[0];
    

    http://codepad.org/f9KjbCCb

    【讨论】:

      【解决方案3】:

      尝试:

      $new_array = array();
      foreach($big_array as $array)
      {
          foreach($array as $val)
          {
              array_push($new_array, $val);
          }    
      }
      
      print_r($new_array);
      

      【讨论】:

        【解决方案4】:
        $oneDim = array();
        foreach($twoDim as $i) {
          $oneDim[] = $i[0];
        }
        

        【讨论】:

          【解决方案5】:

          PHP array_merge­Docs 函数可以展平你的数组:

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

          如果原始数组的深度高于 2 级,PHP 中的 SPL 有一个RecursiveArrayIterator,您可以使用它来展平它:

          $flat = iterator_to_array(new RecursiveIteratorIterator(new RecursiveArrayIterator($array)), 0);
          

          另请参阅: Turning multidimensional array into one-dimensional array

          【讨论】:

            【解决方案6】:

            虽然the page that was previously used to close this page 上的一些答案确实有适合这个问题的答案。由于输入数据结构的原因,此特定问题的某些技术不属于其他页面。

            这里的示例数据结构是一个单元素索引数组。

            var_export(array_column($array, 0));
            

            这就是这个问题所需要的吗?

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-12-02
              • 1970-01-01
              • 2023-03-26
              • 2019-06-29
              • 2016-02-18
              相关资源
              最近更新 更多