查找具有特定值的数组项,将其删除并重新索引数组

时间:2013-02-14 17:05:47

标签: php arrays indexing

我想出了一个解决方案(我将在下面发布),但我想知道是否有更好,更紧凑的方式呢?

function removeImage($id) {
    $index;

    for ($i = 0; $i <= count($this->_images); $i++) {
        if ($this->images[$i] == $id) {
            $index = $i;
            break;
        }

        if ($i == count($this->_images)) {
            throw new Exception("No image with this ID found.");
        }
    }

    unset($this->_images[$index]);
    $this->_images = array_values($this->_images);
}

1 个答案:

答案 0 :(得分:0)

  

查找具有特定值的数组项

array_search()

您的更新代码:

$index = array_search($id, $this->_images);
if ($index !== false) {
  unset($this->_images[$index]);
  $this->_images = array_values($this->_images);
}

注意:除非顺序索引很重要,否则如果您重构代码以使用foreach,则没有理由重新索引数组。