【问题标题】:PHP array_column to return with values onlyPHP array_column 仅返回值
【发布时间】:2020-11-25 23:58:36
【问题描述】:

是否有可能从 array_column 中得到一个只有值的结果?

我想要array_column的示例数组

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

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

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

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

谢谢

【问题讨论】:

  • 您能展示一下您的预期结果吗?
  • 我的预期结果应该是 [0 => 'John', 1 => 'Doe']

标签: php array-column


【解决方案1】:

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

$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
)

【讨论】:

  • 请注意,这将过滤掉空字符串、false、null 和 0。
【解决方案2】:

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

// 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 !== ''; });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-01
    • 2018-03-10
    • 2020-09-22
    • 1970-01-01
    • 2016-09-13
    • 2015-12-24
    • 2011-02-24
    相关资源
    最近更新 更多