Удалить "столбцы" из подмассивов двумерного массива - PullRequest
7 голосов
/ 13 сентября 2010

У меня есть простой двумерный массив, подобный этому:

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

            )
    )

Ответы [ 4 ]

17 голосов
/ 13 сентября 2010
const MAX = 2; // maximum number of elements
foreach ($array as &$element) {
    $element = array_slice($element, 0, MAX);
}
0 голосов
/ 20 июня 2013

Даже с array_walk:

array_walk(
    $aYourArray,
    function(&$aSubRow){
        $aSubRow = array_slice($aSubRow, 0, 2);
    }
);
0 голосов
/ 13 сентября 2010

Что-то не так с простым циклом?

for ( $i = 0; $i < sizeof($input); $i++ ) {
    for ( $j = 0; $j < $n; $j++ ) {
        $output[$i][$j] = $input[$i][$j];
    }
}
return $output;
0 голосов
/ 13 сентября 2010
foreach($array as $key=> $element)
{
    for($i=0; $i<$n; $i++)
    {
        $newArray[$key][$i] = $element[$i];
    }
}

Не уверен, есть ли более эффективный метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...