php - array_filter 留下一个 0 和一个 null

标签 php mysql

我正在使用 array_filter 从数组中过滤掉 0 和 null。

代码:

while ($row1 = $sth1->fetch(PDO::FETCH_ASSOC)){

    $rows_shared_id[$row1['shared_id']]['shared_id'] = $row1['shared_id'];

}

$erows_shared_id = array_filter($rows_shared_id);

foreach($erows_shared_id as $evalue){

    echo $evalue['shared_id'] . "<br>";

}

没有 array_filter 的结果有多个值为 0 或 null 的单元格。使用 array_filter,它会过滤掉所有的 0 和空值,除了每个的第一个。因此,我剩下一个包含一个 0 和一个空值的数组。为什么它要删除所有内容,但要删除第一个,我该如何解决?谢谢!

最佳答案

array_filter 适用于单级数组,但您的是二级数组。

尝试将 array_filter 映射到数组的子数组:

$erows_shared_id = array_map('array_filter', $rows_shared_id);

然后您可以再次过滤该数组以删除任何具有空数组作为子项的键。

$erows_shared_id = array_filter(array_map('array_filter', $rows_shared_id));

关于php - array_filter 留下一个 0 和一个 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39628201/

相关文章:

PHP 如何使用 SUM 和数学运算符打印查询

php - Laravel,邮件枪 'Class GuzzleHttp\Client name not found'

php - drupal字段集合如何存储在数据库中?

php - 使用 count() 获取 mysql 中帖子的评论总数始终返回 1,即使特定帖子没有评论

mysql - 在 SQL : Oldest records, 中排序,但 x 行内没有重复值

mysql - 选择具有最高日期的行

java - Hibernate 为一对多域对象的每个创建查询插入两条记录

javascript - 如何选择表格中的所有输入字段

Javascript图像上传和显示

PHP/MYSQL - 找不到此代码发送邮件两次以上的原因