首页 > 解决方案 > 如何从 fetchall 的结果集中删除数组

问题描述

我有一个 mysql 查询的结果,需要根据条件将结果减少 1 个或多个数组。这是我尝试过的。

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll();
print_r($result);

它将创建一个结果集:

Array
(
    [0] => Array
        (
            [name] => pear
            [0] => pear
            [colour] => green
            [1] => green
        )

    [1] => Array
        (
            [name] => watermelon
            [0] => watermelon
            [colour] => pink
            [1] => pink
        )

)

如何删除名称为 watermelon 的整个数组,使其 $result 仅包含 pear 元素?

这是我尝试过的,但没有奏效:

foreach ($result AS $items=>$vals){
    foreach ($items AS $item=>$value){
    if ($item =="name" AND $value=='watermelon'){
        unset($result[$items]);
        }
    }
}

提前致谢。杰克

标签: phpmysql

解决方案


foreach正确引用语句及其变量。它去了key=>value

foreach ($result AS $index=>$item){
    if($item['name'] === 'watermelon')
        unset($result[$index]);
    }
}

但就像其他人评论的那样,最好的方法就是WHERE在你的查询中抛出一个条件并让数据库进行过滤。


推荐阅读