Страница 1 из 1

[php] сравнить значения в массиве, туплю

Добавлено: 2011-10-07 13:12:52
Alex Keda
есть массив, типа

Код: Выделить всё

Array(
1 => 5.34,
2 => 7.43,
3 => 0.01
);
надо найти ключ наименьшего значения
т.е. в данном примере, мне нужна цифра 3

чё-то даже не соображу =(

Re: [php] сравнить значения в массиве, туплю

Добавлено: 2011-10-07 13:51:37
Alex Keda

Код: Выделить всё

$b = max($array);

foreach ($array as $key => $value)
{
        if($value < $b){
                $id = $key;     
                $b = $value;
        }
}
echo "\n" . $id . "\n";
такую вот кривизну пока нарисовал....

Re: [php] сравнить значения в массиве, туплю

Добавлено: 2011-10-07 14:25:14
hizel
мдэ, а почему не min? что делать если наименьших значений несколько? http://php.net/manual/ru/function.min.php см. комментарии
например этот: http://www.php.net/manual/ru/function.min.php#100899

Re: [php] сравнить значения в массиве, туплю

Добавлено: 2011-10-07 14:47:57
Alex Keda
min - вернёт значение
мне нужен - именно ключ
--
это из балансировки нагрузки по серверам - ключ - идентификатор сервера, значнеие - нагрузка....

Re: [php] сравнить значения в массиве, туплю

Добавлено: 2011-10-07 15:08:46
hizel
Alex Keda писал(а):min - вернёт значение
мне нужен - именно ключ
мда, что-то тупишь ты основательно сейчас, я не сообщал о том, что min полностью решит твою проблему

Re: [php] сравнить значения в массиве, туплю

Добавлено: 2011-10-07 15:51:00
hizel
и вообще зачем max\min

Код: Выделить всё

$b = $array[0];

foreach ($array as $key => $value)
{
        if($value < $b){
                $id = $key;     
                $b = $value;
        }
}

Re: [php] сравнить значения в массиве, туплю

Добавлено: 2011-10-07 16:57:45
Alex Keda
я не знаю ни одного элемента из массива.
поэтому

Код: Выделить всё

 $b = $array[0];
может оказаться пустым, или, приведя к числовому значению - ноль.
что автмоатически привдёт к неверному выбору

Re: [php] сравнить значения в массиве, туплю

Добавлено: 2011-10-07 20:04:21
FreeBSP

Код: Выделить всё

<?php

    if (isset($array) && count($array)) {
       $k  = array_search(min($array)); // ключ первого минимального
       $ka = return array_keys($array, min($array)); // массив ключей с минимальными значениями
    } else {
        $k  = false;
        $ka = false;
    }

    if ($k === false) {
        //массив не существует, или пуст
    }
?>

Re: [php] сравнить значения в массиве, туплю

Добавлено: 2011-10-07 20:09:54
rmn
отсортировать массив с учетом ключей (asort, вроде) и читать сервера с минимальной загрузкой по порядку с 0-вого

Re: [php] сравнить значения в массиве, туплю

Добавлено: 2011-10-07 20:16:36
FreeBSP
вариант, но это будет уже не исходный массив так что ТЗ немного не соотествует
да и опять же проблема пустого массива

Re: [php] сравнить значения в массиве, туплю

Добавлено: 2011-10-07 22:44:38
Alex Keda
пустого быть не может - это эксцепшеном строк на 50 раньше отрботает =))

Re: [php] сравнить значения в массиве, туплю

Добавлено: 2011-10-08 0:23:34
PYO
Alex Keda писал(а):я не знаю ни одного элемента из массива.
поэтому

Код: Выделить всё

 $b = $array[0];
может оказаться пустым, или, приведя к числовому значению - ноль.
что автмоатически привдёт к неверному выбору

Код: Выделить всё

$b = reset($array);

Re: [php] сравнить значения в массиве, туплю

Добавлено: 2014-04-03 11:17:20
argen

Код: Выделить всё

$key_min=array_search(min($array),$array);

Re: [php] сравнить значения в массиве, туплю

Добавлено: 2014-11-19 21:14:02
zg

Код: Выделить всё

$array = [
    1 => 5.34,
    2 => 7.43,
    3 => 0.01
];

asort($array);

var_dump( key($array) ); // int(3)