Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Можно ли как-то сократить этот код?


Recommended Posts

Скрытый текст
if (empty($result['address_2']))	{
						$text_address_2  = '';
					} else {
						$text_address_2  = $this->language->get('text_address_2');
					}	
					if (empty($result['address_1'])) {
						$text_address_1  = '';
					} else {
						$text_address_1  = $this->language->get('text_address_1');
					}
					if (empty($result['city'])) {
						$text_city  = '';
					} else {
						$text_city  = $this->language->get('text_city');
					}
					if (empty($result['postcode'])) {
						$text_postcode  = '';
					} else {
						$text_postcode  = $this->language->get('text_postcode');
					}

 

Можно ли как-то сократить этот код? Решил одну проблему, связанную с тем, что название поля убиралось бы если значение поля пустое. Но чувствую, что написано как-то топорно)

Надіслати
Поділитися на інших сайтах


)))
 

$text_address_2  = $text_address_1  = $text_city  = $text_postcode  = '';
if (empty($result['address_2']))	{
	$text_address_2  = $this->language->get('text_address_2');
}	
if (empty($result['address_1'])) {
	$text_address_1  = $this->language->get('text_address_1');
}
if (empty($result['city'])) {
	$text_city  = $this->language->get('text_city');
}
if (empty($result['postcode'])) {
	$text_postcode  = $this->language->get('text_postcode');
}

 

  • +1 1
Надіслати
Поділитися на інших сайтах

Еще вот так можно:

 

$text_address_2 = (empty($result['address_2'])) ? '' : $this->language->get('text_address_2');
$text_address_1 = (empty($result['address_1'])) ? '' : $this->language->get('text_address_1');
$text_city = (empty($result['city'])) ? '' : $this->language->get('text_city');
$text_postcode  = (empty($result['postcode'])) ? '' : $this->language->get('text_postcode');

 

Надіслати
Поділитися на інших сайтах

Ну либо так:grin:

foreach (array('address_2', 'address_1', 'city', 'postcode') as $item) {
  ${'text_' . $item} = '';
  if (empty($result[$item])) {
    ${'text_' . $item}  = $this->language->get('text_' . $item);
  }    
}

 

  • +1 2
Надіслати
Поділитися на інших сайтах

В 05.09.2022 в 15:58, Exploits сказав:

Ну либо так:grin:

 

ААААА:ugeek:

  • +1 1
Надіслати
Поділитися на інших сайтах

05.09.2022 в 16:39, Flint2000 сказал:

ААААА:ugeek:

Именно так и надо писать в модулях))) Чтобы потом об элементарном надо было задумыавться )))

Надіслати
Поділитися на інших сайтах

05.09.2022 в 16:39, Flint2000 сказал:

ААААА:ugeek:

Ну так зато когда таких переменных будет 100 достаточно их прописать в массив)) и код почти не увеличиться, разве что ради красоты вынести массив выше цикла

Надіслати
Поділитися на інших сайтах

05.09.2022 в 16:01, SergeTkach сказал:

Главный вопрос - зачем укорачивать вообще )))

ну типа борьба с простынями опенкартовскими:grin:

Надіслати
Поділитися на інших сайтах

05.09.2022 в 16:44, Exploits сказал:

ну типа борьба с простынями опенкартовскими:grin:

Я что-то без простыней уже путаюсь. А раньше тоже боролся )

Надіслати
Поділитися на інших сайтах

05.09.2022 в 15:58, Exploits сказал:

Ну либо так:grin:

foreach (array('address_2', 'address_1', 'city', 'postcode') as $item) {
  ${'text_' . $item} = '';
  if (empty($result[$item])) {
    ${'text_' . $item}  = $this->language->get('text_' . $item);
  }    
}

 

такой код дольше обрабатывается, но виртуозно, не поспоришь

05.09.2022 в 16:01, SergeTkach сказал:

Главный вопрос - зачем укорачивать вообще )))

пишу/исправляю сразу правильно, чтобы потом не искать "а где у меня тормозит скрипт". Кодменеджмент:D

05.09.2022 в 15:49, SergeTkach сказал:

Еще вот так можно:

 

$text_address_2 = (empty($result['address_2'])) ? '' : $this->language->get('text_address_2');
$text_address_1 = (empty($result['address_1'])) ? '' : $this->language->get('text_address_1');
$text_city = (empty($result['city'])) ? '' : $this->language->get('text_city');
$text_postcode  = (empty($result['postcode'])) ? '' : $this->language->get('text_postcode');

 

То, что искал. Спасибо

05.09.2022 в 15:37, chukcha сказал:

)))
 

$text_address_2  = $text_address_1  = $text_city  = $text_postcode  = '';
if (empty($result['address_2']))	{
	$text_address_2  = $this->language->get('text_address_2');
}	
if (empty($result['address_1'])) {
	$text_address_1  = $this->language->get('text_address_1');
}
if (empty($result['city'])) {
	$text_city  = $this->language->get('text_city');
}
if (empty($result['postcode'])) {
	$text_postcode  = $this->language->get('text_postcode');
}

 

в принципе тоже самое что и изначальный вариант, но спасибо)

Надіслати
Поділитися на інших сайтах


05.09.2022 в 16:48, NexusStyle1 сказал:

пишу/исправляю сразу правильно, чтобы потом не искать "а где у меня тормозит скрипт". Кодменеджмент

 

То есть, какой код быстрее исполнится Вы знаете, а как сократить - не знаете? )

Надіслати
Поділитися на інших сайтах

05.09.2022 в 16:54, SergeTkach сказал:

 

То есть, какой код быстрее исполнится Вы знаете, а как сократить - не знаете? )

ну как-то так да))). Это как в музыке, ты можешь быть меломаном, но не знать всех песен

Надіслати
Поділитися на інших сайтах


05.09.2022 в 16:56, NexusStyle1 сказал:

ну как-то так да))). Это как в музыке, ты можешь быть меломаном, но не знать всех песен

То есть, Вы знаете, как компилируется и исполняется PHP, но не знаете, что такое тернарный оператор?

Надіслати
Поділитися на інших сайтах

05.09.2022 в 17:04, SergeTkach сказал:

То есть, Вы знаете, как компилируется и исполняется PHP, но не знаете, что такое тернарный оператор?

не, я знаю что он существует (правда не знал что он так назівается), вот поєтому я и почувствовал что с кодом что-то не так

Надіслати
Поділитися на інших сайтах


06.09.2022 в 12:16, NexusStyle1 сказал:

ну уж точно быстрее перебора через foreach

На сколько наносекунд?)) вероятно это очень важно на той странице где делаете)))

Надіслати
Поділитися на інших сайтах

06.09.2022 в 12:18, Exploits сказал:

На сколько наносекунд?)) вероятно это очень важно на той странице где делаете)))

наносекунда там, наносекунда здесь и получаются секунды))

Надіслати
Поділитися на інших сайтах


06.09.2022 в 12:18, Exploits сказал:

На сколько наносекунд?)) вероятно это очень важно на той странице где делаете)))

на нагруженном проект это может  сказаться

if однозначно быстрее, в моем примере - компактнее  и инициализация явная
И по памяти используемой памяти меньше на 4 байта )))
 

Надіслати
Поділитися на інших сайтах

Вы какие-то маньяки честное слово:grin: байты, секунды. Смотрите изначальное задание

Надіслати
Поділитися на інших сайтах

06.09.2022 в 12:30, Exploits сказал:

Вы какие-то маньяки честное слово:grin: байты, секунды. Смотрите изначальное задание

ато
что быстрее?
insert (...) (...)

insert (...) (...)

insert (...) (...)

или
insert (...)  (...),(...),(...)

Причем здесь это? Не причем..

С чем согласен - с циклом меньше копипаста аля ОС

Надіслати
Поділитися на інших сайтах

06.09.2022 в 12:42, chukcha сказал:

ато
что быстрее?
insert (...) (...)

insert (...) (...)

insert (...) (...)

или
insert (...)  (...),(...),(...)

Причем здесь это? Не причем..

С чем согласен - с циклом меньше копипаста аля ОС

не в ту степь вообще)) где пхп а где база!

запись в базу 1 вместо 1000раз - понятно что быстрее в разы, или в сотни, или в ту же тысячу раз. А исполнение простыни на 1000 строк и цикла на 1000 итераций в рамках погрешности. Это ж разные вещи в самом деле.

А вот в плане оптимизации то да, лучше делать оптимизацию в сторону базы а не считать байты и наносекунды. Но все конечно зависит от ситуации и целесообразности

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.