0

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

我想要的示例数组 array_column

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

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

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

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

谢谢

4

2 回答 2

0

我认为您想要这样的东西(仅获取具有值的列):

$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
)
于 2020-08-05T18:36:30.113 回答
0

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

// 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 !== ''; });
于 2020-08-05T18:54:14.497 回答