Нужен простой PHP скрипт который можно было ставить на сайт ( знаю что нужно учиться но не имеет смысла из-за одного скрипта) Суть: Есть 10 переменных,например переменные:Пиво,рыба,суп,варенье,сушенная рыба,чипсы,сухарики,яд,хлеб,вода. Каждая переменная привязана к другим переменным и имеет значение N из 10 например пиво к чипсам 10/10,сухарикам8/10,сушенная рыба10/10,хлеб4/10 и тд,(значение привязываеться к пиву) а хлеб с вареньем8/10,супом9/10,рыбой10/10.(значение привязываеться к хлебу) Если в форме из N вариантов выберу хлеб то по выбыванию должно отобразиться: рыба10/10,суп 9/10,варенье8/10,пиво 5/10,хлеб 4/10. Если в я выберу хлеб и пиво то должно отобразиться ,сушенная рыба10/10,жаренная рыба8/10. То есть по идее скрипт должен подобрать ингредиент подходящий к ингредиентам от 1 до 5. Спасибо за внимание надеюсь на вас. Добавлено спустя 14 минут 51 секунду: Нашел похожий скрипт но я нуждаюсь в рейтинге привязанности N/10. viewtopic.php?f=36&t=49034
при таких раскладах имеет смысл заплатить кстати, нифига не понял просьбу. если не можешь сформулировать — попробуй нарисовать. хоть поржем.
Я же написал похоже на viewtopic.php?f=36&t=49034 .Мне надо что-бы было возможно выбрать до 5 переменных сразу + рейтинг от 1 до 10,например код из темы: "Наполеон": "франция, торт, император", "Путин": "Россия, водка, медведь", "Обама": "США, баксы, санкции" Если я выберу Путина и Обаму то переменные которые присутствуют у переменных "Путин" и "Обама" должно показываться по убыванию. <!DOCTYPE HTML> <html> <head> <title>NAPOLEON</title> <meta charset="utf-8"> <script type="text/javascript"> // создаем массив слов и соответствующих фраз var arr_search = { "Наполеон": "франция, торт, император", "Путин": "Россия, водка, медведь", "Обама": "США, баксы, санкции" } // здесь создаем подсказки (можно удалить)------ var list = ""; for(var name in arr_search) { list += name + ", "; }; arr_search[""] = list; //---------------------------------------------- function wordSearch(val){ var result = document.getElementById("result"); for(var name in arr_search) { if(name == val){ result.value = arr_search[name]; break; } else { result.value = "Совпадений нет!" }; }; }; </script> </head> <body> text1<textarea onkeyup="wordSearch(this.value)"></textarea><br/> text2<textarea id="result"></textarea><br/> </body> </html>
то есть надо как это, но не как это. ммм… нет не понятно. чувак, я сам тебе заплачу если ты внятно расскажешь что надо.
И так напишу как есть. Скрипт нужен для выявления героя который силен против определенных 3 героев,максимально 5: В игре выбирают поочередно героев например выбрали 3 героев,это:Kaitlyn,Korki и Tristana Caitlyn слаба против Sivir1,Jinx2,Tristana3,Ezreal4 Korki слаб против Urgot1,Caitlyn2,Graves3,Ezreal4,Kog'Maw5 Tristana слаба против Caitlyn1,MissFortune2,Sivir3,Kog'Maw4 Скрипт должен выбрать героя который наиболее силен против этих 3 героев например Sivir1;Sivir3, Kog'Maw5;KogMaw4, Ezreal4;Ezreal4. Цифра после названия от 1 до 10 чем меньше тем сильней. Скрипт выбирает того у кого меньше этот рейтинг или того кто чаще присутствует чаще в этом списке. Наиболее сильный против этих 3 героев это Sivir с 4/2,я выбираю ее.Есть еще Ezreal с 8/2 рейтингом,и Kog'Maw 9/2 Порядок по убыванию: 1)Sivir 4/2=2 2)Ezreal 8/2=4 3)Kog'Maw 9/2=4,5 Вооот.
Программисты не думают этой логикой с информатики 10 класса =/ =( Добавлено спустя 5 минут 1 секунду: так немного яснее. Цифра откуда в имени берется? Она же отдельно записана в базе? Надо знать структуру базы данных.
Эта цифра как бы рейтинг преимущества от 1 до 10.Я взял с этого сайта http://www.championselect.net/champions/caitlyn чемпионов которые имеют преимущество против Caitlyn.чем ближе к 10,тем меньше преимуществ,чем ближе к 1 тем больше. Добавлено спустя 22 минуты 25 секунд: Можно как-то прямо в скрипте ее записать? Например Caitlyn:Sivir(1),Jinx(2),Tristana(3) или что-то типа того.Простите но я не разбираюсь в програмирований Добавлено спустя 9 минут 59 секунд: Еще раз обьяснию: Есть A,B,C,D,E A={Sivir1,Jinx2,Tristana3} - чемпионы которые сильны против Caitlyn A пересечение B пересечение С пересечение D пересечение E=Результат + Порядок по убыванию: 1)Sivir 4/2=2 2)Ezreal 8/2=4 3)Kog'Maw 9/2=4,5 Добавлено спустя 26 минут 15 секунд: Как бы это пересечение массивов.Кто-нибудь помоги или скажите сколько примерно будет стоить сейчас денег пока нет. Добавлено спустя 5 минут 20 секунд: Есть A B C,мне примерно нужно что-бы A пересечение B = С. A={Sivir1,Jinx2,Tristana3,Kog'Maw4} - чемпионы которые сильны против Caitlyn. B={Urgot1,Caitlyn2,Graves3,Ezreal4,Kog'Maw5 - чемпионы которые сильны против Corki. A={Sivir1,Jinx2,Tristana3,Kog'Maw4} пересечение B={Urgot1,Caitlyn2,Graves3,Ezreal4,Kog'Maw5 =KogMaw9 вот это мне и нужно но в других масштабах
Кодинг это всего-лишь выражение мыслей на языке программирования. Нет логики — нет программы. Короче, это не твоё.
Неужели так сложно написать,или подсказать как написать программу которая могла осуществить простое математическое выражение"A ∩ B ∩ С ∩ D ∩ E=X " + некоторые фичи.Мне кажется это вы безнадежны.
это пипец как сложно на процессоре, который для деления 6/3 тратит три десятка тактов! Слух, самое безнадежное - это когда некомпетентный человек решает, как сделать и исходит из своего решения при постановке задачи. Программистам, строителям и парикмахерам нужны настоящие исходные данные в реальном представлении и четкое представление самого конечного результата, а как пройти между этими пунктами А и Б они лучше знают сами. Добавлено спустя 3 минуты 50 секунд: даю 95% что задача решается набором условий в SQL вместо математической формулы
Но для SQL нужно создать базу данных вроде,зачем усложнять если я даже не знаю операторов SQL? тем более PHP.
Ок, для вычисления схождения в массивах существует функция array_intersect. Код (PHP): $arr = [ 'colors1' => ['red', 'yellow', 'blue', 'green', 'cyan'], 'colors2' => ['blue', 'magenta', 'red'], 'colors3' => ['cyan', 'pink', 'green', 'magenta', 'red'] ]; function find_intersect_in_two($name1, $name2, $arr) { return array_values(array_intersect($arr[$name1], $arr[$name2])); } print_r(find_intersect_in_two('colors1', 'colors3', $arr)); // Array([0] => red [1] => green [2] => cyan)
Спасибо попробую. Добавлено спустя 9 минут 30 секунд: Попробовал с: <?php $array1 = array("a" => "green", "red", "blue"); $array2 = array("b" => "green", "yellow", "red"); $result = array_intersect($array1, $array2); print_r($result); ?> ,это просто шикарное готовое решение но мне нужно что-бы переменную $array пользователь мог бы сам выбрать но скрипт выполняется "по дэфолту" таки я ошибся это очень сложно, зря назвал того некомпетентным.... Можете еще немножко меня направить?
старая версия php? с a и b у тебя связан только green, это ассоциативный массив а не многомерный. Следует использовать двумерный массив, как в примере. Задача решается с помощью условий и циклов. Самая объемная часть - подготовка данных. Код (PHP): <?php $arr = [ 'colors1' => ['red', 'yellow', 'blue', 'green', 'cyan'], 'colors2' => ['blue', 'magenta', 'red'], 'colors3' => ['cyan', 'pink', 'green', 'magenta', 'red'] ]; ?> <form method="POST"> <?php foreach (array_keys($arr) as $name) { echo '<input type="checkbox" name="' . $name . '" value="1">' . $name . '<br>'; } ?> <input type="submit"> </form> <?php if (!empty($_POST)) { $arr1 = []; $arr2 = []; $arr3 = []; foreach (array_keys($_POST) as $name) { if (empty($arr1)) { $arr1 = $arr[$name]; } else if (empty($arr2)) { $arr2 = $arr[$name]; } else if (empty($arr3)) { $arr3 = $arr[$name]; } } switch (count($_POST)) { case 2: $result = array_values(array_intersect($arr1, $arr2)); break; case 3: $result = array_values(array_intersect($arr1, $arr2, $arr3)); break; } print_r($result); } Добавлено спустя 1 минуту 17 секунд: array_intersect способна принимать сколько угодно массивов. Ты можешь расширить пример до пяти.
Попробовал с этим скриптом,это не совсем то что мне нужно... Мне нужна функция которая могла выбирать эти варианты,например 5 колонки и в ней можно было бы выбрать от 1 до 5 переменных для пересечения,это возможно?если да то как? Добавлено спустя 6 минут 26 секунд:
Доехали, уже героя в ЛоЛ хотят выбирать, исходя из математических выкладок скрипта... Код (Text): function strongest($champions) { $arr = array( 'Caitlyn' => array('Sivir'=>1, 'Jinx' => 2, 'Tristana' =>3, "Kog'Maw" => 4), 'Korki' => array("Urgot" => 1, "Caitlyn" => 2, "Graves" => 3, "Ezreal" => 4, "Kog'Maw"=> 5), 'Tristana' => array ("Caitlyn" => 1, "MissFortune" =>2, "Sivir" =>3, "Kog'Maw" =>4) ); foreach ($champions as $champ) { foreach ($arr[$champ] as $enemy => $rank) { $out[$enemy]['rank'] += $rank; $out[$enemy]['count']++; } } foreach ($out as $enemy => &$data) $data = $data['rank'] / $data['count']; asort($out); return $out; } Вызывать так: $a = strongest(array('Caitlyn', 'Tristana')); Только все равно это неоптимально. В таком раскладе чемпион, который на втором месте против 10 противников, будет хуже в рейтинге, чем тот, который на первом месте против одного и вообще не котируется против остальных. Так что плохую вы шкалу придумали.
Можно просто сделать что-бы скрипт выбирал того у кого больше $data['count']; то есть хоть какое-то преимущество против определенных чемпионов. Добавлено спустя 28 секунд: Спасибо за скрипт.
Можно отсортировать по count и взять потом первый (или последний) элемент viewtopic.php?t=31155 Стоит попытаться привести исходные данные к более простому для обработки виду. Я честно говоря так и не врубился толком, в чем суть =)
Начинаю делать базу в SQL т.к так компактней через SELECT FROM будет пересечение,таки будет эффективно если добавить только 6 близких контров.Как будет готово - выложу. Добавлено спустя 19 секунд: Может пригодиться кому Добавлено спустя 35 минут 6 секунд: Можно сделать например нормальную комбинацию для 2+героев.
Я рекомендую делать, как минимум, чем больше число, тем лучше данный чемпион против заданного. Например, в процентах. Если будет, например, 'Caitlyn' => array('Sivir'=>100, 'Jinx' => 95, 'Tristana' =>85, "Kog'Maw" => 70), то там можно смотреть уже и по максимуму, и по среднему арифметическому, и по среднеквадратичному отклонению, и по черту лысому.