PHP array_column 到 return 只有值

PHP array_column to return with values only

是否可以从 array_column 获得只有值的结果?

我想要的示例数组 array_column

$array = [
   ['name' => ''],
   ['name' => 'John'],
   ['name' => 'Doe']
]

当我使用 array_column 这就是我得到的

Array
(
    [0] => 
    [1] => John
    [2] => Doe
)

我打算只使用 foreach 并检查每个值,但我想知道是否有更简单的方法来做到这一点

谢谢

我想你想要这样的东西(只获取有值的列):

$array = [
    ['name' => ''],
    ['name' => 'John'],
    ['name' => 'Doe']
];

$result = array_filter(array_column($array, 'name'));

array_filter 将过滤掉空名称,您将得到如下内容:

// print_r($result);

Array
(
    [1] => John
    [2] => Doe
)

此外,如果您需要重新排序索引,那么您可以像这样使用 array_values

$result = array_filter(array_column($array, 'name'));

// If you want to reorder the indices
$result = array_values($result);

// print_r($result);

Array
(
    [0] => John
    [1] => Doe
)

您也可以这样做来删除空值和空值:

// PHP 7.4+
$result = array_filter(array_column($array, 'name'), fn($val) => !is_null($val) && $val !== '');

// PHP 5.3 and later
$result = array_filter(array_column($array, 'name'), function($val) { return !is_null($val) && $val !== ''; });