@andizura

Как проверить индекс на существование, если он есть, то использовать?

Есть вот такой кода.
$row = ${'Идентификатор_товара'};
$products1 = $this->db->query("SELECT price FROM " . DB_PREFIX . "product where product_id=".$row);
$products2 = $this->db->query("SELECT price FROM " . DB_PREFIX . "product_special where product_id=".$row);
$result1 = $products1->row['price'];
$result2 = $products2->row['price'];
if ($result2>0) {$result = $result1 - $result2;} else {$result ='';}

Нужно сделать так, что бы не выбивала эта ошибка
PHP Notice: Undefined index: price
price = цена товара, которой у некоторых может и не быть.
Тип данных object
Результат выполнения должен быть в переменной $result
P.S. Если можно, в ответ отредактированные код.
  • Вопрос задан
  • 155 просмотров
Решения вопроса 1
Spartak-2205
@Spartak-2205
Разработка и создание сайтов
// for PHP < 7
$result1 = isset($products1->row['price']) ? $products1->row['price'] : '';
$result2 = isset($products2->row['price']) ? $products2->row['price'] : '';

// for PHP >= 7
$result1 = $products1->row['price'] ?? '';
$result2 = $products2->row['price'] ?? '';

$result = $result1 != '' && $result2 != '' ? ($result1 - $result2) : '';


Или так:
$result = isset($products1->row['price'], $products2->row['price']) ? ($products1->row['price'] - $products2->row['price']) : '';
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега PHP
♬♬
Может, прямо в MySQL получать результат?
$sql = <<<EOFSQL
SELECT IF (b.price IS NOT NULL, a.price - b.price, '') AS result
FROM ${DB_PREFIX}product AS a 
  LEFT JOIN
     ${DB_PREFIX}product_special AS b
  ON a.product_id = b.product_id
WHERE a.product_id = ?
EOFSQL;

$stmt = $this->pdo->prepare($sql);
$stmt->execute([$row]);

$result = $stmt->fetchColumn();
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы