从关联数组中删除部分内容

4
我希望能够搜索关联数组,当找到一个值时,删除该部分数组。
这是我的一个数组样例:
    Array
(
    [0] => Array
        (
            [id] => 2918
            [schoolname] => Albany Medical College
            [AppService] => 16295C0C51D8318C2
        )

    [1] => Array
        (
            [id] => 2919
            [schoolname] => Albert Einstein College of Medicine
            [AppService] => 16295C0C51D8318C2
        )

    [2] => Array
        (
            [id] => 2920
            [schoolname] => Baylor College of Medicine
            [AppService] => 16295C0C51D8318C2
        )
}

我希望做的是在 AppService 中找到值为 16295C0C51D8318C2 的部分并将其删除。例如,如果该代码在上述数组上运行,则会清空整个数组,因为逻辑匹配该数组中的所有内容。
以下是我的代码:
            foreach($this->schs_raw as $object) {
                if($object['AppService'] == "16295C0C51D8318C2") {
                    unset($object);
                }
        }

你正在尝试取消 foreach 循环的本地变量。但是你打算修改原始数组的内容。 - mario
尝试使用引用,以避免使用副本。 - Royal Bg
4个回答

4

3
尝试像这样做:

尝试像这样做:

foreach ($this->schs_raw as &$object) {
    if($object['AppService'] == "16295C0C51D8318C2") {
        unset($object);
    }
}

最终:

foreach ($this->schs_raw as $k => $object) {
    if($object['AppService'] == "16295C0C51D8318C2") {
        unset($this->schs_raw[$k]);
    }
}

谢谢。那就可以了。&符号有什么用?我以前从没见过。 - Richard M
1
@Richard:http://php.net/manual/zh/language.references.php - Felix Kling
http://php.net/manual/en/language.references.pass.php - speccode

2

试试这个:

foreach($this->schs_raw as $key=>$object) {
  if($object['AppService'] == "16295C0C51D8318C2") {      
    unset($this->schs_raw[$key]); // unset the array using appropriate index    
    break; // to exit loop after removing first item
  }
}

0
为什么不创建一个新数组?如果没有找到匹配项,将索引添加到新数组中… 如果找到了,则不要添加。您的新数组将只包含您想要的数据。

想象一下在应用程序中,一个数组被使用了太多次,需要实现一种逻辑来修改这个数组。 - Royal Bg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接