что, если индекс не существует

#php #if-statement

#php #if-оператор

Вопрос:

У меня есть этот оператор if

 <?php if(in_array($product['product_id'], $selected_products['business'])) { ?>
  

но иногда массив $selected_products не имеет индекса business .. как я могу изменить условие if без использования внешнего оператора if

Ответ №1:

Это зависит от того, что вы хотите сделать, если индекс не существует.

Если вы хотите выполнить эту проверку только при наличии индекса, добавьте isset() проверку перед ним (разрыв строки для наглядности):

 if (isset($selected_products['business'])
    amp;amp; in_array($product['product_id'], $selected_products['business'])) {
  

Кроме того, если вам нужно сделать что-то еще в случае отсутствия индекса, прикрепите else блок.

Комментарии:

1. Я думаю, ) отсутствует после isset($selected_products['business']

Ответ №2:

Короткое замыкание isset с использованием оператора amp;amp; . При вычислении короткого замыкания второе выражение не вычисляется, если первое завершается ошибкой.

<?php if(isset( $selected_products['business']) amp;amp; in_array($product['product_id'], $selected_products['business'])) { ?>

Комментарии:

1. .. и это полезно для предотвращения появления сообщения об ошибке. ( 1 в противном случае)

Ответ №3:

Используйте логический оператор AND amp;amp; для объединения обоих выражений:

 if (array_key_exists('business', $selected_products) amp;amp; in_array($product['product_id'], $selected_products['business']))
  

Ответ №4:

Вы могли бы использовать троичный оператор, хотя эта строка будет немного занята:

 <?php if(in_array($product['product_id'], isset($selected_products['business']) ? $selected_products['business'] : false))) { ?>