Нужна помощь.
Есть такой код(опроса):
<?php
$fanta = [2, "Вам нравится Фанта"];
$kola = [5, "Вам нравится кола"];
$pepsi = [3, "Вам нравится пепси"];
echo max($fanta[0], $kola[0], $pepsi[0]);
?>
У меня получается так, что PHP выводит на экран первое значение, а надо вывести на экран второе значение массива, где первое значение больше остальных, не используя MySQL.
$fanta = [2, "Вам нравится Фанта"];
$kola = [5, "Вам нравится кола"];
$pepsi = [3, "Вам нравится пепси"];
$x=[$fanta,$kola,$pepsi];
usort($x, function($a, $b){return ($b[0]-$a[0]);});
echo $x[0][1];
В вашем случае только через множество if - else
.
$max = max($fanta[0], $kola[0], $pepsi[0]);
if($fanta[0] == $max) echo $fanta[1]
else if ($kola[0] == $max) echo $kola[1]
else echo $pepsi[1];
Это ужасно. Поэтому вам сперва следует переработать вашу модель данных. Например так:
$input = [
['count' => 2, 'text' => "Фанта"],
['count' => 5, 'text' => "кола"],
['count' => 3, 'text' => "пепси"]
];
usort($input, function (int $a, int $b) { return -($a['count'] <=> $b['count']); });
echo "Вам нравится ".$input[0]['text'];
На самом деле вариантов, как организовать данные лучше, чем это сделано у вас - множество.
PS Кола по английски будет cola
Не шибко актуально для текущего вопроса, здесь массив содержит только 3 элемента, но тем не менее. Задача поиска максимального значения решается за один проход по массиву, ее сложность n
, в то время как использование сортировки и взятие первого элемента, как минимум предполагает сложность nlogn
.
Так что если топикстартеру надо найти текст из массива с максимальным элементом, то как и в других случаях, сначала надо преобразовать три переменные к одному массиву.
$data = [$fanta, $kola, $pepsi];
Затем, можно, например, сделать числовые значения ключами. Найти максимум для ключей и вывести соответствующий элемент.
$data = array_column($data, 1, 0);
$max = max(array_keys($data));
$result = $data[$max];
либо самый простой способ - использование простого цикла и сравнений:
$max = -1; //PHP_INT_MIN или $data[0][0];
$mv = null;
foreach($data as list($v,$t)){
if($max < $v){
$max = $v;
$mv = $t;
}
}
echo $mv;
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите пожалуйста, какие есть альтернативы форма в форме phpЕсть форма, которая тянется через всю страницу, как в этой форме сделать еще...
Есть несколько картинок разных цветов(красный,зелёный,жёлтый), как с помощью jquery сделать сортировку по цвету, те нажимаешь на красный цвет,...
Работаю в Sublime Text, нужно установить миграцию с БД MySQLОшибка "could not find drivers"