mixtape774
@mixtape774
Занимаюсь Web, Desktop разработкой и реверсингом

Можно ли так сократить код PHP if (!empty($product_info) && $product_info['status'] == 1) ?

Обнаружил такой код у заказчика... не понимаю почему так написано:
if (!empty($product_info))
			{
				if ($product_info['status'] == 1)
				{					
					$this->data['product_name'] = $product_info['name'];
					$this->data['product_image'] = $product_info['image'];
					$this->data['product_price'] = $product_info['price'];
									
					if (isset($this->request->get['count']))
						$this->data['product_count'] = $this->request->get['count'];
				}
				else
					$this->data['isWrongProduct'] = true;
			}
			else
				$this->data['isWrongProduct'] = true;


Можно ли сократить код до:
if (!empty($product_info) && $product_info['status'] == 1)
			{
					$this->data['product_name'] = $product_info['name'];
					$this->data['product_image'] = $product_info['image'];
					$this->data['product_price'] = $product_info['price'];
									
					if (isset($this->request->get['count']))
						$this->data['product_count'] = $this->request->get['count'];
			}
			else
				$this->data['isWrongProduct'] = true;

или могут возникнуть ошибки undefined?
  • Вопрос задан
  • 2719 просмотров
Решения вопроса 1
sim3x
@sim3x
if (
// есть ли переменная; если не проверить кинет notice
    isset($product_info) &&  

// есть ли в массиве; если не проверить кинет notice
    isset($product_info['status']) &&  

// во избежании выпадение волос -- используй сравнение без приведения типов    
   $product_info['status'] === 1)


Действует аналогично плюсам

Есть and, со своими тараканами
stackoverflow.com/questions/2803321/and-vs-as-oper...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Grag
По логике можно.
Ответ написан
Комментировать
miraage
@miraage
Старый прогер
Еще более короткая запись.
В isset можно передавать любое условие с любым количество вложенностей.
Так же можно передавать несколько переменных, и вернет true, только если все отличны от null.

if (isset($product_info['status']) && $product_info['status'] === 1)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы