while ($row = $result->fetch(PDO::FETCH_OBJ)){
$before = '(';
$after = ')';
$plus = ' +';
if($row->enchant == 0){
unset ($row->enchant);
unset ($plus);
}
if($row->amount == 1){
unset ($row->amount);
unset ($before);
unset ($after);
}
echo '<a><span data-title="' . $row->item_name . ' ' . $before . $row->amount . $after . $plus . $row->enchant . '"><img src="/img/items/' . $row->item_type . '.jpg" width="32" height ="32"></span></a>';
}
Я бы конечно сделал вот так.недавно начал учить php
есть функция которая парсит из базы итемы, я сделал условия которые будут отключать некоторые символы в случае если допустим итем 1 - у него отключается вывод количества, или если итем не точенный у него не выводится заточка
пример
Посмотреть вложение 44199
Посмотреть вложение 44200
так вот, хотелось бы узнать насколько это костыльно у меня это реализовано, можно ли так пускать на лайв, и как лучше в целом это сделать?
кусок кода:
PHP:while ($row = $result->fetch(PDO::FETCH_OBJ)){ $before = '('; $after = ')'; $plus = ' +'; if($row->enchant == 0){ unset ($row->enchant); unset ($plus); } if($row->amount == 1){ unset ($row->amount); unset ($before); unset ($after); } echo '<a><span data-title="' . $row->item_name . ' ' . $before . $row->amount . $after . $plus . $row->enchant . '"><img src="/img/items/' . $row->item_type . '.jpg" width="32" height ="32"></span></a>'; }
while ($row = $result->fetch(PDO::FETCH_OBJ)){
$enchantStr = '';
$amountStr = '';
if($row->enchant > 0)
$enchantStr = ' +' . $row->enchant;
if($row->amount > 0)
$amountStr = ' (' . $row->amount . ')';
echo '<a><span data-title="' . $row->item_name . $amountStr . $enchantStr . '"><img src="/img/items/' . $row->item_type . '.jpg" width="32" height ="32"></span></a>';
}
хм, тоже неплохо, не додумался почему тоЯ бы конечно сделал вот так.
Кода меньше и код гораздо читаемый, как мне кажется.
PHP:while ($row = $result->fetch(PDO::FETCH_OBJ)){ $enchantStr = ''; $amountStr = ''; if($row->enchant > 0) $enchantStr = ' +' . $row->enchant; if($row->amount > 0) $amountStr = ' (' . $row->amount . ')'; echo '<a><span data-title="' . $row->item_name . $amountStr . $enchantStr . '"><img src="/img/items/' . $row->item_type . '.jpg" width="32" height ="32"></span></a>'; }
Да и как мне кажется, код более оптимизирован. Меньше временных переменных, меньше канкатинаций.
Я просто уже не помню до конца, но если включить варнинги в php, скорее всего будет ругаться на обращение к перменной которая не установлена. А вы как раз обращаетесь к переменным которые удалили функцией unsetхм, тоже неплохо, не додумался почему то
$items = $result->fetchAll( PDO::FETCH_OBJ );
foreach ( $items as $item )
{
$title = $item->item_name;
if ( $item->enchant > 0 )
$title .= ' +' . $item->enchant;
if ( $item->amount > 0 )
$title .= ' (' . $item->amount . ')';
echo '<a><span data-title="' . $title . '"><img src="/img/items/' . $row->item_type . '.jpg" width="32" height ="32"></span></a>';
}
а почему не while? просто из интереса спрашиваюили так
PHP:$items = $result->fetchAll( PDO::FETCH_OBJ ); foreach ( $items as $item ) { $title = $item->item_name; if ( $item->enchant > 0 ) $title .= ' +' . $item->enchant; if ( $item->amount > 0 ) $title .= ' (' . $item->amount . ')'; echo '<a><span data-title="' . $title . '"><img src="/img/items/' . $row->item_type . '.jpg" width="32" height ="32"></span></a>'; }
в данном случае не будет иметь значения, как больше нравитсяа почему не while? просто из интереса спрашиваю
while ($row = $result->fetch(PDO::FETCH_OBJ)){
echo '<a><span data-title="' . $row->item_name . ($row->enchant > 0 ? ' +' . $row->enchant : '') . ($row->amount > 0 ? ' (' . $row->amount . ')' : '') . '"><img src="/img/items/' . $row->item_type . '.jpg" width="32" height ="32"></span></a>';
}
while ($row = $result->fetch(PDO::FETCH_OBJ)){
$data_titles = [];
$data_titles[] = $row->item_name;
if($row->enchant > 0)
$data_titles[] = '+' . $row->enchant;
if($row->amount > 0)
$data_titles[] = '(' . $row->amount . ')';
// Можно добавить еще что-то в $data_titles.
echo '<a><span data-title="' . implode(' ', $data_titles) .'"><img src="/img/items/' . $row->item_type . '.jpg" width="32" height ="32"></span></a>';
}
я еще не пришел к тому, что бы делать по уму, я еще даже не весь базовый синтаксис выучил) поэтому и спросил как лучшеСильно костбьіли.
У тебя есть операторьі ?? ?:
зачем тебе делать ансет перед вьіводом?
Можно сделать несколько вариантов. ( один менее костьільний, второй)
Єто переделаньій вариант Mex-Vision, тоже самое, только для пхп 8 и в 1 строку)
Может нужно будет добавлять какие-то еще лебльі или т.п.PHP:while ($row = $result->fetch(PDO::FETCH_OBJ)){ echo '<a><span data-title="' . $row->item_name . ($row->enchant > 0 ? ' +' . $row->enchant : '') . ($row->amount > 0 ? ' (' . $row->amount . ')' : '') . '"><img src="/img/items/' . $row->item_type . '.jpg" width="32" height ="32"></span></a>'; }
То можно сделать вот так
PHP:while ($row = $result->fetch(PDO::FETCH_OBJ)){ $data_titles = []; $data_titles[] = $row->item_name; if($row->enchant > 0) $data_titles[] = '+' . $row->enchant; if($row->amount > 0) $data_titles[] = '(' . $row->amount . ')'; // Можно добавить еще что-то в $data_titles. echo '<a><span data-title="' . implode(' ', $data_titles) .'"><img src="/img/items/' . $row->item_type . '.jpg" width="32" height ="32"></span></a>'; }
У тебя сразу идет вьівод.я еще не пришел к тому, что бы делать по уму, я еще даже не весь базовый синтаксис выучил) поэтому и спросил как лучше
Вы принципиально отключили русский язык на телефоне?)Сильно костьільно из-за чистого пхп).
У тебя есть операторьі ?? ?:
зачем тебе делать ансет перед вьіводом?
Можно сделать несколько вариантов. ( один менее костьільний, второй)
Єто переделаньій вариант Mex-Vision, тоже самое, только для пхп 8 и в 1 строку)
Может нужно будет добавлять какие-то еще лебльі или т.п.PHP:while ($row = $result->fetch(PDO::FETCH_OBJ)){ echo '<a><span data-title="' . $row->item_name . ($row->enchant > 0 ? ' +' . $row->enchant : '') . ($row->amount > 0 ? ' (' . $row->amount . ')' : '') . '"><img src="/img/items/' . $row->item_type . '.jpg" width="32" height ="32"></span></a>'; }
То можно сделать вот так
PHP:while ($row = $result->fetch(PDO::FETCH_OBJ)){ $data_titles = []; $data_titles[] = $row->item_name; if($row->enchant > 0) $data_titles[] = '+' . $row->enchant; if($row->amount > 0) $data_titles[] = '(' . $row->amount . ')'; // Можно добавить еще что-то в $data_titles. echo '<a><span data-title="' . implode(' ', $data_titles) .'"><img src="/img/items/' . $row->item_type . '.jpg" width="32" height ="32"></span></a>'; }
Да, єтот портал единстенное место, где я общаюсь на єтом язьіке.Вы принципиально отключили русский язык на телефоне?)
пожалуй когда хотя бы месяца 3 опыта будетПосмотрите в сторону MVC , на таком подходе далеко не уедешь
Если синтаксис знаешь, то лучше не терять время, и сразу почитать про паттерны проектирования. MVC это некая база для небольшой веб разработки на PHP, которая не должна вызвать сложностей, так как очень проста в понимании.пожалуй когда хотя бы месяца 3 опыта будет
с синтаксисом пока проблемы, я начал пилить некое подобие статистики сервера для себя, пилил на mysqli, потом решил перекинуться на pdo, потом понял что лучше делать функциямиЕсли синтаксис знаешь, то лучше не терять время, и сразу почитать про паттерны проектирования. MVC это некая база для небольшой веб разработки на PHP, которая не должна вызвать сложностей, так как очень проста в понимании.
Тогда лучше всё такие основы выучить, и долго не задерживаться на функциональном программировании, изучайте ООП. Наступит переломный момент, когда вам покажется что перед вами открылся целый мир=) Потом конечно вы сломаете ноги и руки изучая паттерны, и запутаетесь еще сильнее чем вначале пути, но это уже совсем другая история.с синтаксисом пока проблемы, я начал пилить некое подобие статистики сервера для себя, пилил на mysqli, потом решил перекинуться на pdo, потом понял что лучше делать функциями
по сути я еще даже циклы толком не освоил, из того что я уже понял это работа с массивами, условия, работа с БД, сессии, функции и прочая мелочь
пока еще не познал смысл ооп, работая с pdo примерно понимаю как это должно работать, но применения у себя еще не нашел, возможно когда процедурный стиль освою пойду ооп учить, а пока буду обучаться)Тогда лучше всё такие основы выучить, и долго не задерживаться на функциональном программировании, изучайте ООП. Наступит переломный момент, когда вам покажется что перед вами открылся целый мир=) Потом конечно вы сломаете ноги и руки изучая паттерны, и запутаетесь еще сильнее чем вначале пути, но это уже совсем другая история.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?