3

我想搜索一个关联数组,当我找到一个值时,删除数组的那一部分。

这是我的数组的示例:

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

我想做的是在 中找到值16295C0C51D8318C2AppService然后删除数组的那部分。因此,例如,如果该代码要在上述数组上运行,它会清空整个数组,因为逻辑匹配该数组中的所有内容。

到目前为止,这是我的代码:

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

4 回答 4

4

array_filter会有所帮助(http://php.net/manual/en/function.array-filter.php

$yourFilteredArray = array_filter(
    $this->schs_raw,
    function($var) {
        return $object['AppService'] != "16295C0C51D8318C2"
    }
);
于 2013-11-03T20:44:58.207 回答
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]);
    }
}
于 2013-11-03T20:39:30.890 回答
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
  }
}
于 2013-11-03T20:44:13.947 回答
0

为什么不创建一个新数组?如果未找到匹配,则将索引添加到新数组...如果找到,请不要添加。您的新数组将只包含您想要的数据。

于 2013-11-03T20:39:56.937 回答