#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