PHP 只允许一行包含排序数组中的特定值

PHP Allow only one line who contains a specific value in a sorted array

我正在寻找更好的解决方案来解决我的问题。

我的数组看起来像这样并按发布日期排序:

array:12 [
    0 => array:3 [
        "id" => "11602"
        "released" => false
        "releaseDate" => "2015-09-09"
    ],
    1 => array:3 [
        "id" => "11601"
        "released" => false
        "releaseDate" => "2015-08-25"
    ],
    2 => array:3 [
        "id" => "11600"
        "released" => true
        "releaseDate" => "2015-08-25"
    ],
    ...
]

我只想保留离释放线最近的("released" => false)并移除其他的。

我目前的解决方案是:

private function keepOneVersionUnreleased(array $array)
{
    for ($i = 0; $i < count($array); $i++) {
        if ((isset($array[$i+1])) && ($array[$i]['released'] === false) && ($array[$i+1]['released'] === false)) {
            unset($array[$i]);
        }
    }

    return $array;
}

有人有更好的解决方案吗?

谢谢

这个怎么样:

 foreach ($array as $key => $value)
 {
     if ((isset($array[$key+1)) && ($array[$key]['released'] === false && ($array[$key+1]['released'] === false)){
        unset($array[$key]);
    }
 }
return $array;

您可以简单地使用 array_filter 作为

$result = array_filter($your_array,function($v){ return ($v['released'] === false);});

Demo