$class1 = array($user['qw'],$user['qwe'],$user['qwer'],$user['qwert'],$user['qwerty']);
из него мы определяем максимальное значение
$max = max($class1);
по этому максимальному значению ищем переменные из другого массива
$class2 = array($user['qw']=>$user[qw1], $user['qwe']=>$user[qwe1] и т.д.)находим значение
$class2[$max]но вот сама проблема: максимальное значение из первого массива иожет совпадать($user['qw'] = $user['qwe'] =$user['qwer']) и в таком случае мне нужно определять максимальное значение из 2-ого массива (переменные с добавлением 1 $user[qw1] ) как это реализовать?
Спустя 39 минут, 34 секунды (7.05.2012 - 16:20) walerus написал(а):
Проверяйте процент совпадений в первом массиве, из этого условия делайте то что нужно.
Спустя 13 минут, 37 секунд (7.05.2012 - 16:34) Pritex3 написал(а):
как совпадения проверять? у меня 40 елементов в массиве
Спустя 1 час, 22 минуты, 15 секунд (7.05.2012 - 17:56) Pritex3 написал(а):
Может отсортировать 2-ой массив функцией asort()?
Спустя 1 день, 3 часа, 2 секунды (8.05.2012 - 20:56) walerus написал(а):
Pritex3 - Вообще не очень понятно что нужно сделать, привел бы простой пример, на 5 - 10ти элементах.
То, что я имел ввиду.
Используя array_count_values(); узнать максимальное количество одинаковых Элементов, потом посчитать процент от всего массива и если допустим процент 70 - 80 процентов, то искать максимальное значение во втором массиве.
То, что я имел ввиду.
Используя array_count_values(); узнать максимальное количество одинаковых Элементов, потом посчитать процент от всего массива и если допустим процент 70 - 80 процентов, то искать максимальное значение во втором массиве.
Спустя 1 день, 1 час, 30 минут, 5 секунд (9.05.2012 - 22:26) Pritex3 написал(а):
процент никчему, сама проблема что если ключ во втором массиве одинаковый с другим максимальным то выводит последнее значение, как это обойти можно?
Спустя 30 минут, 40 секунд (9.05.2012 - 22:57) Pritex3 написал(а):
упрощу, у меня есть число 29, мне нужно вывести из массива максимальный элемент содержащий ключ 29
Спустя 25 минут, 23 секунды (9.05.2012 - 23:22) sergeiss написал(а):
Цитата (Pritex3 @ 9.05.2012 - 22:26) |
сама проблема что если ключ во втором массиве одинаковый с другим максимальным то выводит последнее значение, как это обойти можно? |
Ты хочешь сказать, что у тебя в массиве 2 одинаковых ключа? Если это так, то меняй структуру своего скрипта, чтобы не было таких совпадений. Потому что ты получишь только то, что уже получаешь. ПХП не может различить 2 элемента с одинаковыми ключами!!! :) Точнее говоря, их там просто нету. Если ты напишешь $arr[10]=25, а затем $arr[10]=100, то ты просто перезапишешь величину этого элемента массива.
PS. Если принципиально, чтобы сохранить "историю", то тогда вот такой подход может помочь:
$arr[10][]=25;
...
$arr[10][]=100;
...
$arr[10][]=28;
В итоге ты получишь не простую величину в элементе основного массива, а массив величин. В данном примере там, в элементе с индексом 10, будет массив из величин 25, 100, 28 - именно в таком порядке.
Спустя 12 часов, 40 секунд (10.05.2012 - 11:23) Pritex3 написал(а):
может быть можно как-то по другому реализовать? В общем детально : у меня есть значения, среди них я нахожу максимальное, но максимальных может быть несколько, и вот по этому (максимальному) значению мне нужно сделать выборку всех максимальных (если их несколько) значений (отсеить остальные), этим (максимальным) значениям соответствуют другие числа и мне среди (максимальных) значений нужно отсеить так чтобы осталось только максимальное значение с максимальным числом, которое соответствует этому значению.
Спустя 2 часа, 52 минуты, 49 секунд (10.05.2012 - 14:16) sergeiss написал(а):
Pritex3 - лучше покажи пример из чисел (массивов), чтобы было понятнее. Иначе не до конца ясно.
Спустя 3 часа, 44 минуты, 44 секунды (10.05.2012 - 18:00) Pritex3 написал(а):
Вот массив. Все значения переменных числа.
также есть значения которые виртуально соответствуют значениям этого массива тоесть переменной $user['qqq'] соответствует переменная $user['qqqFULL'], переменной $user['www'] соот. пер. $user['wwwFULL'] и т.д. ( взаимосвязаны но не равны между собой)
Далее нужно найти максимальное значение из массива $class :
НО т.к. в массиве могут быть числа 8, 7, и опять 8 ... и максимальное будет 8, по данному максимальному значению ( тоесть 8) мы должны найти ключ из другого массива там где соответствие :
Как можно сделать всему этому определенную альтернативу??
$class = array($user['qqq'],$user['www'],$user['eee'],$user['rrr'],$user['ttt'],$user['yyy']);
также есть значения которые виртуально соответствуют значениям этого массива тоесть переменной $user['qqq'] соответствует переменная $user['qqqFULL'], переменной $user['www'] соот. пер. $user['wwwFULL'] и т.д. ( взаимосвязаны но не равны между собой)
Далее нужно найти максимальное значение из массива $class :
$max = max($class);
НО т.к. в массиве могут быть числа 8, 7, и опять 8 ... и максимальное будет 8, по данному максимальному значению ( тоесть 8) мы должны найти ключ из другого массива там где соответствие :
$class2 = array($user['qqq']=>$user[qqqFULL], $user['www']=>$user[wwwFULL] и т.д.);
//далее т.к. ключей 8 может быть несколько мы должны оставить только тот ключ у которого соответствующее значение больше (например $user[qqqFULL]> остальных)
arsort($class2); //делаем сортировку, но как уже сказали при одинаковых ключах никакие действия невозможны т.к. он уникален
$class2[$max]; //находим этот ключ по значению 8
Как можно сделать всему этому определенную альтернативу??
Спустя 3 часа, 57 минут, 9 секунд (10.05.2012 - 21:57) Pritex3 написал(а):
ну неужели нет альтернативных решений?
Спустя 15 минут, 23 секунды (10.05.2012 - 22:13) sergeiss написал(а):
Если честно, то я так до конца и не понял алгоритм. Может быть, кто-то понял и молчит?
Другой вариант - может быть, тебе поменять алгоритм на такой, чтобы решение было более прозрачным и понятным?
Другой вариант - может быть, тебе поменять алгоритм на такой, чтобы решение было более прозрачным и понятным?
Спустя 37 минут, 50 секунд (10.05.2012 - 22:51) Pritex3 написал(а):
ну тут объяснить очень тяжко, чстно писать задолбался

Спустя 41 секунда (10.05.2012 - 22:51) Pritex3 написал(а):
алгоритм 100% менять нужно, знать бы в какую сторону рыть
Спустя 35 минут, 46 секунд (10.05.2012 - 23:27) redreem написал(а):
Pritex3
в таких случаях я для себя решаю, что возможно лучше пересмотреть изначальную логику. ибо если логика порождает гемор и частности, то эта логика ущербна.
в таких случаях я для себя решаю, что возможно лучше пересмотреть изначальную логику. ибо если логика порождает гемор и частности, то эта логика ущербна.
Спустя 4 минуты, 4 секунды (10.05.2012 - 23:31) inpost написал(а):
Правильно составленный вопрос - 90% успеха. Я прочитал твоё сообщение, так и не понял, что там за алгоритм и что делать надо... увы!
Спустя 7 минут, 53 секунды (10.05.2012 - 23:39) sergeiss написал(а):
Цитата (Pritex3 @ 10.05.2012 - 22:51) |
алгоритм 100% менять нужно, знать бы в какую сторону рыть |
А ты абстрагируйся от того, как ты это пытался сделать. И сформулируй на словах, что же надо, какая вообще изначально стоит задача. Безо всяких упоминаний слов "массив", "ключ" и им подобных!!!
Спустя 9 минут, 24 секунды (10.05.2012 - 23:48) Pritex3 написал(а):
Цитата (sergeiss @ 10.05.2012 - 19:39) | ||
А ты абстрагируйся от того, как ты это пытался сделать. И сформулируй на словах, что же надо, какая вообще изначально стоит задача. Безо всяких упоминаний слов "массив", "ключ" и им подобных!!! |
спасибо буду думать
Спустя 9 часов, 36 минут, 14 секунд (11.05.2012 - 09:25) SlavaFr написал(а):
Цитата (sergeiss @ 10.05.2012 - 18:13) |
Может быть, кто-то понял и молчит? |
непонял, начинаю говорить
Цитата (Pritex3 @ 10.05.2012 - 14:00) |
также есть значения которые виртуально соответствуют значениям этого массива тоесть переменной $user['qqq'] соответствует переменная $user['qqqFULL'], переменной $user['www'] соот. пер. $user['wwwFULL'] и т.д. ( взаимосвязаны но не равны между собой) |
в чем тогда заключается взаимосвязь если они не ровны и как мне эту взаимосвязь понять?
У меня есть предположение, но ты должен меня поправить, если я неправельно понял!
Есть 2 Масива М1 и М2.
Ты хочеш найти все ключи масива М2 которые имеют value равное махимальному значению М1?
если да, то это делают так
print_r( array_keys($M2, max($M1) ) );
Цитата (Pritex3 @ 10.05.2012 - 18:51) |
алгоритм 100% менять нужно, знать бы в какую сторону рыть |
в сторону доступного обьяснения проблемы