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);});
我正在寻找更好的解决方案来解决我的问题。
我的数组看起来像这样并按发布日期排序:
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);});