【问题标题】:Remove "columns" from the subarrays of a two dimensional array从二维数组的子数组中删除“列”
【发布时间】:2011-04-11 18:45:30
【问题描述】:

我有一个像这样的简单二维数组:

Array
    (
        [0] => Array
            (
                [0] => abc
                [1] => 123
                [2] => aaaaa

            )

        [1] => Array
            (
                [0] => def
                [1] => 456
                [2] => ddddd
            )

        [2] => Array
            (
                [0] => ghi
                [1] => 789
                [2] => hhhhhhh
            )
    )

我正在尝试编写一个高效的函数,该函数将返回一个数组,其中只有每个子数组的前“n”列。换句话说,如果 n=2,那么返回的数组将是:

Array
    (
        [0] => Array
            (
                [0] => abc
                [1] => 123


            )

        [1] => Array
            (
                [0] => def
                [1] => 456

            )

        [2] => Array
            (
                [0] => ghi
                [1] => 789

            )
    )

【问题讨论】:

  • 你不可能找到比 nikic 更好的答案。

标签: php arrays multidimensional-array


【解决方案1】:
const MAX = 2; // maximum number of elements
foreach ($array as &$element) {
    $element = array_slice($element, 0, MAX);
}

【讨论】:

  • @hopeseekr:你说得对,&$element 从 PHP 5 开始可用。出于某种原因,我认为它是在 PHP 5.3 中引入的。
【解决方案2】:
foreach($array as $key=> $element)
{
    for($i=0; $i<$n; $i++)
    {
        $newArray[$key][$i] = $element[$i];
    }
}

不确定是否有更有效的方法。

【讨论】:

    【解决方案3】:

    循环遍历有什么问题吗?

    for ( $i = 0; $i < sizeof($input); $i++ ) {
        for ( $j = 0; $j < $n; $j++ ) {
            $output[$i][$j] = $input[$i][$j];
        }
    }
    return $output;
    

    【讨论】:

      【解决方案4】:

      即使使用 array_walk :

      array_walk(
          $aYourArray,
          function(&$aSubRow){
              $aSubRow = array_slice($aSubRow, 0, 2);
          }
      );
      

      【讨论】:

        猜你喜欢
        • 2019-08-05
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 2012-01-21
        • 2015-06-08
        • 1970-01-01
        • 2021-03-03
        相关资源
        最近更新 更多