Уведомление PHP: Неопределенный индекс, когда массив цикличного выполнения

Изменяя направление объединения таблиц, вы можете загружать только пользователей и группы, связанные с Payment:

class Payment < ApplicationRecord  
  belongs_to :paymentable, polymorphic: true
  belongs_to :user, -> { where(payments: { paymentable_type: 'User' }) }, foreign_key: 'paymentable_id'
end

Payment.includes(user: :group).each do |payment|
  ...
end
6
задан FLY 11 July 2012 в 19:09
поделиться

2 ответа

Просто тест для него с isset, например.

if (!empty($aka)) {
        foreach ($aka as $ak) {
                if(isset($ak["lang"]) && ($ak["lang"]=="es")) {
                        $sptitle=$ak["title"];
                }
        }
}

Если Вы будете не знать, как булев оператор как && может быть сорван, если первый операнд будет ложью, то второй операнд не будет оценен. Вы будете часто видеть эту идиому, используемую в проверке availablilty чего-то прежде, чем действовать на него во втором операнде.

Вы могли также использовать array_key_exists ('Ленг', $aka) вместо isset, он имеет немного отличающуюся семантику, хотя - он возвратит true, если элемент будет установлен на null, whereis isset возвратил бы false.

Интересно, isset по крайней мере дважды с такой скоростью, как array_key_exists, возможно вследствие того, что это - конструкция языка, а не вызов регулярной функции.

15
ответ дан 8 December 2019 в 16:10
поделиться

было бы неправильно использовать:

if (@$ak['lang']) 

я действительно скучаю по тому факту, что мы до сих пор не можем делать 2 проверки в 1, так что

if ($ak['lang']) 

это была одна из прекрасных особенностей PHP, и я просто не см. цель предупреждения о том, инициализирован ли ключ массива на временном языке сценариев, таком как PHP.

Я не уверен, куда идут разработчики PHP. лично меня немного беспокоит, что они превращают PHP во что-то еще. просто оставь это в покое. было здорово.

0
ответ дан 8 December 2019 в 16:10
поделиться
Другие вопросы по тегам:

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