Как сравнить предыдущий ключ ассоциативного массива с текущим ключом в PHP?

#php #foreach #compare #key

#php #заранее #Сравнить #Клавиша #foreach

Вопрос:

Я хочу повторить наиболее распространенное число из массива. У меня есть один массив, и я хочу сравнить предыдущий ключ с текущим ключом моего массива. Как мне это сделать?

Я сделал два цикла foreach:

 $mostCommon = 0;
foreach ($_SESSION['array'] as $key => $value) {
       foreach ($_SESSION['array'] as $key2 => $value2){
           $key  ;
       }
       if(current key is higher than previous key){
           $mostCommon = $value;
       }
}
  

Вот как я не хочу этого делать.

Комментарии:

1. Я не вижу связи между common number и сравнивающими ключами.

Ответ №1:

Вы можете сохранить предыдущий ключ вне цикла.

Пример:

 $previousKey = null;
foreach ($array as $key => $value) {
    if ($key > $previousKey){ //If current key is greater than last key

    }
    $previousKey = $key;
}
  

$highestKey будет установлен на самый большой ключ в этом массиве.

Ответ №2:

Наиболее распространенное число можно найти с помощью array_count_values.
Вывод array_count_values представляет собой ассоциативный массив, в котором ключ является значением, а значение представляет собой количество раз, когда оно находится в массиве.
Отсортируйте массив с помощью asort, чтобы сохранить ключи.
Переверните массив, чтобы получить значение, которое является наиболее распространенным, и повторите последний элемент.

 $arr = [1,2,2,3,3,3,3,1,2,5,3,7];

$counts = array_count_values($arr);
asort($counts);
$flipped = array_flip($counts);
echo "most common number: " . end($flipped) . " is in the array " . end($counts) . " times";
//most common number: 3 is in the array 5 times
  

https://3v4l.org/qSD4J