Как найти массив, который имеет по крайней мере 3 значения больше 4 в php - PullRequest
0 голосов
/ 22 сентября 2018

$ arr = array (4, 2, 3, 4, 5);

Как найти массив, содержащий как минимум 3 значения, которые больше или равны 4?

Я просто хочу сохранить флаг, что массив содержит 3 значения, равные или больше 4.

Ответы [ 5 ]

0 голосов
/ 22 сентября 2018

Это простое решение после оптимизации решения "msg"

$bool = array_reduce($arr, function($num, $val) {
  if ($val >= 4) $num++;
   return $num;
}, 0) >= 3;
0 голосов
/ 22 сентября 2018

Использование array_reduce:

$total = array_reduce($arr, function($num, $val) {
  if ($val >= 4) $num++;
  return $num;
}, 0);
0 голосов
/ 22 сентября 2018

Вы можете сделать это так:

$arr = array(4, 2, 3, 4, 5);
var_dump(threeValuesOver($arr, 3));
function threeValuesOver($array,$value){
    $counter = 0;
    foreach($array as $entry){
        if($entry > $value) $counter++;
        if($counter >= 3) return true;
    }
    return false;
}
0 голосов
/ 22 сентября 2018

Вот быстрый простой код:

$arr = array(4, 2, 3, 4, 5);
$countval = 0;
foreach($arr as $val) {
    $countval+=($val >=4)?1:0;
}
$flag = ($countval>2);

Он будет считать значения, равные или больше 4, и если он будет считать 3 или более, он будет отображаться.

Попробуйте этот другой код:

$arr = array(4, 2, 3, 4, 5);
//--- 1
$arrdif = array(0, 1, 2, 3);
$flag = (count(array_diff($arr, $arrdif))==3);
//--- 2
rsort($arr, SORT_NUMERIC);
$flag = (array_search(3, $arr)==3);
0 голосов
/ 22 сентября 2018

Итерируйте массив, установите значение счетчика.

$counter = 0;
$hasMoreThan3 = false;
foreach($array as $element) {
    if($element > 3) {
        $counter++;
        if($counter >= 3) {
            $hasMoreThan3 = true;
            break;
        }
    }
}

var_dump($hasMoreThan3);

Если массив короткий, вы можете отфильтровать

count(array_filter($array, function($e) {
    return $e > 3;
}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...