Тема: Помогите с массивом (WAP/WEB мастеру/Помощь мастерам) Скиталец (25 Jan 2022 в 18:39) пример в топе имеет только наглядное значение на деле массив бльше и значения динамичные. DoR (25 Jan 2022 в 19:32) Скиталец, приветствую:) // --- Если верно понял тз, то вот решение: $a = [ 1=>1, 3=>3, 2=>2 ]; $b = [ 1=>0 ]; $result = array_merge( $a, $b ); // --- Слияние массивов rsort( $result ); // --- Сортируем массив print_r( $result ); // --- Array ( [0] => 3 [1] => 2 [2] => 1 [3] => 0 ) P.S Сортировка массивов: https://www.php.net/manual/ru/array.sorting.php Скиталец (25 Jan 2022 в 19:34) DoR, все верно. но массив сменил индексы. а этого делать нельзя ключи условны, важно их положение в цикле foreach Скиталец (25 Jan 2022 в 19:39) DoR, вот <? public static function create_maneken($pol,$arr,$id){ $image = imagecreatefrompng(H.\'clan/img/items/\'.$pol.\'.png\'); foreach ($arr as $value) { $value_stryng = (int)$value; $maneken = imagecreatefrompng(H.\'clan/img/items/\'.$pol.\'/\'.$value_stryng.\'.png\'); imagecopy($image, $maneken, 0, 0, 0, 0, 480, 640); } imagepng($image,H.\'sys/maneken/fool/\'.$id.\'.png\'); // Основной $img_i = imagecreatefrompng(H.\'sys/maneken/fool/\'.$id.\'.png\'); $img_o = imagecreatetruecolor(150, 150); $w = ($pol==0)?150:170; imagecopy($img_o, $img_i, 0, 0, $w, 30, 150, 150); imagepng($img_o, H.\'sys/maneken/mini/\'.$id.\'.png\'); // Мини } // $arr - сериализованный массив с вещами ?> метод сборки Скиталец (25 Jan 2022 в 19:40) <? // А вот этот приём я нагло угнал из разрухи ?> <style> .dummy{width:auto;text-align:center;margin-left:auto;margin-right:auto;} .dummy td{vertical-align:top;} .dummy .slot{width:35px;height:35px;padding:2px 2px 3px;background-image:url(\'img/bg-dummy-slot.png\');background-repeat:no-repeat;} .dummy .pic_shd{text-align:center;width:180px;height:200px;background-image:url(\'img/bg-dummy-shd.png\');background-position:50% 0;background-repeat:repeat-y;} .w39px{width:39px;} .p_relative {position: relative;} </style> <? echo \'<div class=\"nav1\"><table class=\"dummy\"><tbody>\'; $i = 0; $arr = unserialize($uc[\'inv\']); foreach($arr as $inv){ $i++; $rune = ($inv!=0)?mysql_fetch_array(mysql_query(\'SELECT `rune` FROM `inv` WHERE `id_items` = \"\'.$inv.\'\" AND `id_user` = \"\'.$uc[\'id_user\'].\'\" \')):FALSE; echo \'<td class=\"w39px\"><div class=\"slot p_relative\"><div class=\"gem_slot \">\'.(($rune!=false && $rune[\'rune\']!=0)?\'<img src=\"img/rune/\'.$rune[\'rune\'].\'.png\"/>\':NULL).\'</div></div></td>\'; if($i==1) echo \'<td colspan=\"2\" rowspan=\"5\"><div class=\"pic_shd\">\'.clan::maneken($uc[\'id_user\'], 150).\'</div></td>\'; else if($i%2==0 && $i!=8)echo \'</tr><tr>\'; else if($i==8)echo \'</tr>\'; } ?> //Если убить порядок руны перемешаются а вещи наденутся на манекен в хаотичном порядке Скиталец (25 Jan 2022 в 19:42) если идея не понятна могу слить наброски. DoR (25 Jan 2022 в 19:46) --Цитата-- Скиталец (25 Jan 2022 в 19:42): если идея не понятна могу слить наброски. ---------- Скиталец, на жаль не где тестить. --- Но если массив сортируешь по ключу, то есть важен порядок ключей а не значения, убери сортировку Вот это - rsort( $result ); Скиталец (25 Jan 2022 в 19:49) DoR, пробовал один хрен при сливании порядок выстраивается. придется зацикливать или базу шмотов править... DoR (25 Jan 2022 в 19:53) Скиталец, смотри... --- Сама суть... Мы массив можем сортировать либо по значению, либо по ключу. Как должен выглядеть твои массив, напиши пример. Скиталец (25 Jan 2022 в 19:55) DoR, <? $arr = array(7=>7, 8=>8, 3=>3, 1=>1, 2=>2, 4=>4, 6=>0, 5=>0); clan::create_maneken($user[\'pol\'], $arr, $user[\'id\']); //вот ?> Скиталец (25 Jan 2022 в 19:59) вот наброски завис на последней маске файла index.php DoR (25 Jan 2022 в 20:04) --Цитата-- Скиталец (25 Jan 2022 в 19:55): DoR, <? $arr = array(7=>7, 8=>8, 3=>3, 1=>1, 2=>2, 4=>4, 6=>0, 5=>0); clan::create_maneken($user[\'pol\'], $arr, $user[\'id\']); //вот ?> ---------- Скиталец, но в данном массиве не учитываются порядок ключей... --- Давай так, вот пример: $a = [ 1=>1, 3=>3, 2=>2 ]; $b = [ 1=>0 ]; $result = array_merge( $a, $b ); // --- Слияние массивов rsort( $result ); // --- Сортируем массив print_r( $result ); Это результат--- Array ( [0] => 3 [1] => 2 [2] => 1 [3] => 0 ) И такой результат тебе не подходит. Поэтому, что предлагаю... Напиши как в данном случае должен выглядеть нужный тебе результат. Скиталец (25 Jan 2022 в 20:11) DoR,смотри ты использовал функцию array_merge() массивы слились в один и теперь у меня два значения 1 но это не страшно, страшно что руны на странице игрока сместились. порядок ключей по отношению к индексу должен быть точным если 8=>8 то он не может быть изменен на 0=>8 Скиталец (25 Jan 2022 в 20:15) зацикливание значений for $arr[] решит проблемму спложением а уникализация индексов уберет лишнее но это куча ненужнго кода DoR (25 Jan 2022 в 20:19) --Цитата-- Скиталец (25 Jan 2022 в 20:11): DoR,смотри ты использовал функцию array_merge() массивы слились в один и теперь у меня два значения 1 но это не страшно, страшно что руны на странице игрока сместились. порядок ключей по отношению к индексу должен быть точным если 8=>8 то он не может быть изменен на 0=>8 ---------- Скиталец, если я верно понимаю, то значение должно быть равно ключу. То есть, если в массив - ( [1] => 1 [2] => 2 [3] => 3 ) Добавляется значение 4, то массив должен выглядеть так - ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 ) Я верно понимаю?....)) DoR (25 Jan 2022 в 20:22) --Цитата-- Скиталец (25 Jan 2022 в 20:15): зацикливание значений for $arr[] решит проблемму спложением а уникализация индексов уберет лишнее но это куча ненужнго кода ---------- Скиталец, если у тебя массив небольшой, не чего страшного в использовании цикла нет. Скиталец (25 Jan 2022 в 20:24) DoR, необязательно. индекс это место куда надета вещь например 8=>8 - это сапоги а точнее вещь с ид в таблице 8 надета на стопы манекена ключи могут меняться например хочу сменить сапоги значение будет 8=>16 или выше DoR (25 Jan 2022 в 20:39) --Цитата-- Скиталец (25 Jan 2022 в 20:24): DoR, необязательно. индекс это место куда надета вещь например 8=>8 - это сапоги а точнее вещь с ид в таблице 8 надета на стопы манекена ключи могут меняться например хочу сменить сапоги значение будет 8=>16 или выше ---------- Скиталец, ага, то есть значение у тебя переменная, но... --- При изменении переменной ( значения ) ключ по прежнему остаётся неизменным. И в случае, если массив с сапогами выглядит так ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 ) То например с берцами -( 16 ) он будет выглядеть так ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 16 ) То есть, порядок ключей остаётся прежний, меняется только значение. Верно понимаю? Скиталец (25 Jan 2022 в 20:54) DoR, да всё меня уже натыкали носом в ошибку на вовебе. научили как надо сделать в топе я сливал большой массив с маленьким а надо наоборот тогда порядок не меняется... честно незнал что есть разница. а модуль пишу для батла ща план пкажу может что еще по функционалу подскажешь.. [i]Добавлено:[/i] DoR, -------------====№ Кланы №====------------- @ автор Скиталец @ Созданы для батла мастеров @ использование без лайка запрещено // нравится модуль? поддержи автора лайком в теме батла.// - При создании клана генерируется игравой персоонаж которого можно всячески развивать и прокачивать есть 4 ветки профессий Маг - персонаж способный защитить клановое хранилище от взлома и передать часть манны для крафта Крафтер - создает снаряжение и улучшения для них Разбойник - может при удачном стечении обстоятельств умыкнуть у другого клана вещь баллы или умение Рыцарь - тот кто может накостылять разбойнику если поймает его на краже и вытрясти с него штраф в случае победы как уже понятно для полноценного развития клана лидеру необходимо иметь всех представителей профессий. или активно вливать баллы в развитие чтобы покупать предметы с аукцина. - Битвы кланов происходят по согласию обоих кланов победитель получает часть опыта от проигравшего и случайный предмет от системы учавствуют все игрки кланов - Аукцион каждый игрок может продать своё умение или созданную вещь при продаже вещи вещь исчезает из хранилища и передаётся клану или персоонажу покупателю при прдаже навыка продавец теряет 1 уровень при передаче навыка покупателю. DoR (25 Jan 2022 в 21:03) --Цитата-- Скиталец (25 Jan 2022 в 20:54): DoR, да всё меня уже натыкали носом в ошибку на вовебе. научили как надо сделать в топе я сливал большой массив с маленьким а надо наоборот тогда порядок не меняется... честно незнал что есть разница. а модуль пишу для батла ща план пкажу может что еще по функционалу подскажешь.. [i]Добавлено:[/i] DoR, -------------====№ Кланы №====------------- @ автор Скиталец @ Созданы для батла мастеров @ использование без лайка запрещено // нравится модуль? поддержи автора лайком в теме батла.// - При создании клана генерируется игравой персоонаж которого можно всячески развивать и прокачивать есть 4 ветки профессий Маг - персонаж способный защитить клановое хранилище от взлома и передать часть манны для крафта Крафтер - создает снаряжение и улучшения для них Разбойник - может при удачном стечении обстоятельств умыкнуть у другого клана вещь баллы или умение Рыцарь - тот кто может накостылять разбойнику если поймает его на краже и вытрясти с него штраф в случае победы как уже понятно для полноценного развития клана лидеру необходимо иметь всех представителей профессий. или активно вливать баллы в развитие чтобы покупать предметы с аукцина. - Битвы кланов происходят по согласию обоих кланов победитель получает часть опыта от проигравшего и случайный предмет от системы учавствуют все игрки кланов - Аукцион каждый игрок может продать своё умение или созданную вещь при продаже вещи вещь исчезает из хранилища и передаётся клану или персоонажу покупателю при прдаже навыка продавец теряет 1 уровень при передаче навыка покупателю. ---------- Скиталец, если честно, тоже как то не обращал внимание, или не помню... --- Я сам давно не работал с пиачпи. А игра думаю получиться прикольная ( начало интригует ) Удачи в разработке...)) Скиталец (25 Jan 2022 в 21:07) DoR, решил прин7ять участие длго думал на какой движок писать хтел на джон но дцмс оказался ближе. DoR (25 Jan 2022 в 21:26) Скиталец, давно тебе об этом писал... --- Рад что ты вернулся. Тем более на социале происходят перемены в лучшую сторону. Помощь знающих людей, в привете...)) M_LoVe (25 Jan 2022 в 21:58) :) Сибирский (27 Jan 2022 в 08:18) Скиталец, что толку тебе что то подсказывать, ты выкладываешь это лишь для того, что бы убедить себя в том, что только твое решение верное а все советы остальных полный бред. Ты говоришь \"но хотелось бы без ГК\", но то, что ты выложил в теме просто ужасно. Извини за прямоту конечно, но блин, ты в \"познании кодерства\" на месте топчешься :( DoR (27 Jan 2022 в 11:22) Сибирский, приветствую господин Сибирский:) --- Откуда столько желчи? Будь так-как пишешь ты ( для Скитальца советы остальных полный бред ), Скиталец бы не изложил - \" меня уже натыкали носом в ошибку на вовебе\" --- Код я не смотрел, но как понимаю - смотрел ты... А если это так, что мешает поделиться опытом: \"вот-это\" не так ( пояснение почему ) и правильное решение? По поводу - \"топчется на одном месте\" думаю ты неправ. Если желаешь, могу более развёрнуто пояснить почему я так думаю. Но самое главное, от Скитальца есть польза. Поэтому предлагаю быть терпимей...)) Сибирский (27 Jan 2022 в 12:12) DoR, надеюсь ты прав и я действительно погорячился, но я реально не понимаю для чего сливать массивы в данном случае. даже если нужна возможность одевать сапоги на голову необходимости сливать массивы нет. DoR (27 Jan 2022 в 13:14) --Цитата-- Сибирский (27 Jan 2022 в 12:12): DoR, надеюсь ты прав и я действительно погорячился, но я реально не понимаю для чего сливать массивы в данном случае. даже если нужна возможность одевать сапоги на голову необходимости сливать массивы нет. ---------- Сибирский, ну почему? В чём то вы тоже правы. --- Действительное \"кое-что\" излишне. Например: $clan_user = mysql_fetch_array( mysql_query(\'SELECT * FROM `clan_user` WHERE `id_user` = \"\'.$user[\'id\'].\'\" LIMIT 1\')); Нет нужды в mysql_fetch_array, по причине использования ассоциативного массива( именного ) Поэтому, я бы использовал - mysql_fetch_assoc, а так же обратил внимание на выборку столбцов, а именно SELECT * Звёздочка * предполагает выборку всех столбцов( полей ) но так-как юзаем только столбец - id_clan, значит его и выбираем - SELECT id_clan ( повышаем производительность, чем уменьшаем накладные расходы ) Поэтому я бы сформировал запрос вот так: $clan_user = mysql_fetch_assoc(query(\'SELECT `id_clan` FROM `clan_user` WHERE `id_user` = \"\'.$user[\'id\'].\'\" LIMIT 1\')); Но стоит отметить, Скиталец ищет нестандартные решения. А это говорит о не зажатости и широте мысли ( скрипт работает не так как положено, а так как пожелает кодер ) --- Что бесспорно является плюс. Вы согласны со мной господин Сибирский?...)) P.S Вы обратили внимание на иное - слияние массивов, поделитесь опытом... Скиталец (27 Jan 2022 в 15:34) Сибирский, так и есть, я давно не работал на php... времени было мало что то новое изучать. по возможности читаю литературу но как видишь не все получается. надеюсь это временно )) и если ты только покричать сюда зашел, будь добр переместись в лс. Скиталец (27 Jan 2022 в 15:41) Сибирский, Саня, я несовсем понимаю твоей агрессии, по поводу сливания массивов поясню. Вещи можно менять, а массив с ними в базе только один если ты видишь вариант как сохранить в одном столбце сразу 8 массивов поделись инфрмацией с удавольствием приму ее к сведению. Вообще надо сказать что форум общий, и тут нет ограничений на то кто имеет право задавать интересующие их вопросы а кто нет. И к счастью не тебе это решать. Скиталец (27 Jan 2022 в 15:44) --Цитата-- DoR (27 Jan 2022 в 13:14): Сибирский, ну почему? В чём то вы тоже правы. --- Действительное \"кое-что\" излишне. Например: $clan_user = mysql_fetch_array( mysql_query(\'SELECT * FROM `clan_user` WHERE `id_user` = \"\'.$user[\'id\'].\'\" LIMIT 1\')); Нет нужды в mysql_fetch_array, по причине использования ассоциативного массива( именного ) Поэтому, я бы использовал - mysql_fetch_assoc, а так же обратил внимание на выборку столбцов, а именно SELECT * Звёздочка * предполагает выборку всех столбцов( полей ) но так-как юзаем только столбец - id_clan, значит его и выбираем - SELECT id_clan ( повышаем производительность, чем уменьшаем накладные расходы ) Поэтому я бы сформировал запрос вот так: $clan_user = mysql_fetch_assoc(query(\'SELECT `id_clan` FROM `clan_user` WHERE `id_user` = \"\'.$user[\'id\'].\'\" LIMIT 1\')); Но стоит отметить, Скиталец ищет нестандартные решения. А это говорит о не зажатости и широте мысли ( скрипт работает не так как положено, а так как пожелает кодер ) --- Что бесспорно является плюс. Вы согласны со мной господин Сибирский?...)) P.S Вы обратили внимание на иное - слияние массивов, поделитесь опытом... ---------- DoR, по запросам к базе ты всё верно написал, но я пока не доделал модуль. когда закончу конечно проиндексирую. спасибо за совет. Сибирский (27 Jan 2022 в 21:54) Скиталец, нет никакой агрессии, просто такой код ты писал и 5 лет назад и теперь. Но, если по делу для чего 8 массивов в 1 столбец? Ты 8 комплектов сразу на чела оденешь? :) Сибирский (27 Jan 2022 в 21:59) DoR, я не знаю ситуаций где при использовании баз данных требуется слияние. Даже сверхсложный по параметрам шмот со множеством характеристик вытягивается одним запросом при продуманной организации базы. Первичный, параметры, идентификатор пользователя, идентификатор слота. Для чего слияние да и с чем? :) DoR (27 Jan 2022 в 22:17) Сибирский, совершенно да...:) --- Это можно решить при помощи майскули, минимально используя пиачпи. Но ты же понимаешь, так не каждый может. ( человек не виноват в том что он не знает то, что знаешь ты ) И в данной ситуации, лучше всего - подсказать...)) Сибирский (28 Jan 2022 в 07:45) DoR, что бы подсказать я должен видеть картину в целом а не кусок кода, в данном случае есть большая вероятность просто все усложнить еще больше. Скиталец (28 Jan 2022 в 09:26) Сибирский, так я 5 лет про php ничего и незнаю... Сань я немогу уловить идеи. мне ненадо 8 комплектов, надо 8 вещей ты имеешь в виду добавить в таблицу user дополнительно 8 полей где будут только ид вещи что ли? или создать отдельную таблицу где будут храниться надетые вещи... чем массив плохо поясни подробнее голова взорвется Скиталец (28 Jan 2022 в 09:29) --Цитата-- Сибирский (28 Jan 2022 в 07:45): DoR, что бы подсказать я должен видеть картину в целом а не кусок кода, в данном случае есть большая вероятность просто все усложнить еще больше. ---------- Сибирский, полный код сюда не влазит сообщения режутся... могу запаковать и выложить архивом. Сибирский (28 Jan 2022 в 09:33) Скиталец, ты делаешь чей то заказ или по личной инициативе себе? Скиталец (28 Jan 2022 в 09:35) DoR, я отказался от использования отдельной таблицы под надетые вещи по прочине того что в самих надетых на манекен вещах никакой динамичности данных нет там один параметр ид вещи и всё. и используется она только при переодевании для сборки манекена и при идентификации снаряжения в сумке. я решил что сохранить в существующей таблице сериализованный массив проще чем всё это делать... честно говря я и сейчас так считаю потому что не могу понять чем он плох. Скиталец (28 Jan 2022 в 09:37) Сибирский, нет не заказ просто для души захотелось вот и делаю. у меня форум написан на руби, к нему такой модуль не прицепить. Сибирский (28 Jan 2022 в 09:37) Скиталец, да, такая ошибка была и у меня сохранять сериализованный массив :) Плохо то, что по сериализованному массиву производить поиск тот еще гемор, и там еще не одна проблема вылезет :) DoR (28 Jan 2022 в 11:57) Скиталец, приветствую! Доброе утро:) --- Кажется я начинаю понимать твою идею. Сейчас отвечу Сибирскому, в ответ на что надеюсь увидеть его вариант... И в случае чего, ты нас поправишь...)) DoR (28 Jan 2022 в 11:58) Сибирский, приветствую господин Сибирский:) --- Аналогично, не вижу всей картины. Поэтому предлагаю упростить, воссоздать свою... А Скиталец нас поправит - так мы понимаем или нет? --- Как это понимаю я...? Как в первом так и во втором случае поиск неизбежен: 1) Поиск по столбцам таблицы. а-поле->шмот-1 б-поле->шмот-2 в-поле->шмот-3 2) Поиск в массиве одного столбца. а-поле->шмот-1, шмот-2, шмот-3 Моё мнение таково, вариант два более компактный, а значит выигрывает. Как видишь это ты? Кстати, доброе утро...)) Сибирский (28 Jan 2022 в 13:43) DoR, я вообще думал он новую делает, а он перелопачивает скрипт 5 летней давности, нет там разумного решения ни в моем случае ни в его, я бы переписал манекен полностью. Сибирский (28 Jan 2022 в 13:44) --Цитата-- Скиталец (25 Jan 2022 в 19:34): DoR, все верно. но массив сменил индексы. а этого делать нельзя ключи условны, важно их положение в цикле foreach ---------- Скиталец, попробуй заковычить значения ключей, строковые параметры он не будет выравнивать DoR (28 Jan 2022 в 14:07) --Цитата-- Сибирский (28 Jan 2022 в 13:43): DoR, я вообще думал он новую делает, а он перелопачивает скрипт 5 летней давности, нет там разумного решения ни в моем случае ни в его, я бы переписал манекен полностью. ---------- Сибирский, очень интересно... --- Предпочитаю работать либо с кодом, либо иметь представление c чем работаю. Не получилось, бывает.... Всего хорошего господин Сибирский...)) P.S может пригодиться: https://dev.mysql.com/doc/refman/8.0/en/json.html Сибирский (28 Jan 2022 в 18:36) DoR, ну так то не я придумал хранить сериализованный массив, так что ссылку то не мне кидай а скиту :) Скиталец (28 Jan 2022 в 21:03) Так я вроде сразу написал код метода сборки манекена... да метод древний, на данный момент проблемма с заменой решена изменения порядка сложения массивов тоесть <? $a = array(1=>1,3=>3); $b = array(3=>2,1=>1,3=>3); $arr = $a+$b; //Если складывать маленький массив с большим просто меняются индексы из большого массива на индексы из маленького. ?> Хотелось бы увидеть другие варианты рисования манекенов потому что я лично представляю только этот... код не 5 летней давности, его лет десять назад предложил один кодер на форуме сайта shimsidin.ru думаю мои современники еще помнят тот сайт... сама соль работы именно с массивами мне с ними рабтать интересно тк они используются и в ror просто не соединяются без записи в кэш сеанса но при этом сортируются так как душе угодно. Скиталец (28 Jan 2022 в 21:14) а генерация обрезанной версии аватара взята из полезных кодов с сайта klybok.net я их просто обеденил и у меня получился метод создающий полный манекен и урезанную до плеч версию которая используеся в чате и битвах Скиталец (28 Jan 2022 в 21:29) вот полный код без графики и базы. если есть какие то реальные предложения по манекенам напишите пример или хотябы на мысль натолкните, я нифига не могу понять как его еще можно собрать помимо того метода который использовал я. Скиталец (29 Jan 2022 в 22:15) понял о каких вариантах вы говорили. начал переписывать менекены на хранение готовой картинки в базе, но что то меня напрягает вес полученной таблицы, не застрянет скрипт при выборке изображения? варианты с аяксом и css отверг сразу тащить такое в кэше даже не смешно... DoR (1 Feb 2022 в 16:26) Скиталец, приветствую. Извини за долгое - \"молчу\"( не с руки ):) --- Свою позицию не только выразил но пояснил почему: Твоя идея имеет право на жизнь ( оспоривших кодом не вижу ) - точка! Буду рад видеть результат...)) P.S Благ в разработке. Источник: http://www.dcms-social.ru/forum/20/44/63374/