从PHP数组中提取行或列

Cri*_*sty 2 php arrays matrix

我有一个二维PHP数组(矩阵).

无论如何从这个矩阵中提取(回显或保存到另一个变量)一行或一列而不迭代元素?

假设我们有这个矩阵:

A A A B
A A A C
A B C D
Run Code Online (Sandbox Code Playgroud)

我想做的事情如下:

display_and_cut_first_line()

//Matrix after this step:    
A A A C
A B C D

display_and_cut_last_column()
//Matrix after this step:
A A A
A B C
Run Code Online (Sandbox Code Playgroud)

它只需要用于边缘元素(第一行/最后一行,第一列/最后一列).我在想某种方式使用切片,但没有设法做到这一点.

Jon*_*Jon 6

提取线很简单:( array_pop最后一行)和array_shift(第一行)为您完成此操作.

在PHP 5.5上提取列很容易array_column.对于早期版本中,它必须与手工完成array_maparray_walk和流行/移位功能,依次对每一行操作:

function extract_last_column(&$array) {
    $column = array();
    array_walk($array, function(&$row) use(&$column) {
        $column[] = array_pop($row);
    });
    return $column;
}
Run Code Online (Sandbox Code Playgroud)

看到它在行动.

如果需要,你可以通过使用array_slice而不是array_poparray_shift- 来概括它,但是对于这些特定的操作,它会更慢.