获取多维数组中特定列的所有值

Par*_*lia 8 php arrays multidimensional-array

我有一个多维数组,比如x列数和y行数.

我特别想要第3列中的所有值.

这样做的显而易见的方法是将它放在这样的for循环中

for(i=0;i<y-1;i++)
{
   $ThirdColumn[] = $array[$i][3];
}
Run Code Online (Sandbox Code Playgroud)

但是这里涉及O(n)的明显时间复杂性.有没有内置的方法让我只需从数组中提取每一行而无需循环.

例如(这不适用)

$ThirdColumn  = $array[][3]
Run Code Online (Sandbox Code Playgroud)

Igo*_*rra 23

给定一个二维数组$channels:

$channels = array(
    array(
        'id' => 100,
        'name' => 'Direct'
    ),
    array(
        'id' => 200,
        'name' => 'Dynamic'
    )
);
Run Code Online (Sandbox Code Playgroud)

一个很好的方法是使用array_map:

$_currentChannels = array_map(function ($value) {
    return  $value['name'];
}, $channels);
Run Code Online (Sandbox Code Playgroud)

如果你是一个通过array_column的potentate(php 5.5+):

$_currentChannels = array_column($channels, 'name');
Run Code Online (Sandbox Code Playgroud)

两者都导致:

Array
(
    [0] => Direct
    [1] => Dynamic
)
Run Code Online (Sandbox Code Playgroud)

星座客人: array_map(php4 +)和array_column(php5.5 +)

// array array_map ( callable $callback , array $array1 [, array $... ] )
// array array_column ( array $array , mixed $column_key [, mixed $index_key = null ] )
Run Code Online (Sandbox Code Playgroud)


Kyl*_*lie 0

尝试这个....

   foreach ($array as $val)
   {
       $thirdCol[] = $val[2];
   }
Run Code Online (Sandbox Code Playgroud)

您最终会得到第三列中所有值的数组

  • 这是当然的,我在帖子中所说的最明显的方法是通过 foreach 循环,但无论如何还是谢谢 (2认同)