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

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

Я сделал две петли 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;
       }
}

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

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Наиболее распространенное число можно найти с помощью 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

0 голосов
/ 27 марта 2019

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

Пример:

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

    }
    $previousKey = $key;
}

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

...