Я купил тему Drupal, и поддержка ... отсутствует. Поэтому я подумал, что попытаюсь справиться с этим сам. Я относительно новичок в программировании на PHP, поэтому, пожалуйста, успокойтесь на мне :)Как правильно сравнить строку и целое число в PHP?
Ошибка, которую я получил: Примечание: объект класса Drupal \ Core \ Field \ FieldItemList не может быть преобразован в int в theme_css_alter ()
копания в заблуждение, он пришел из первой строки кода в этом случае утверждение:
if(isset($node->nid) && $node->nid == 90){
//do stuff
}
Я сделал свое исследование и обнаружил, что его ошибка PHP при использовании оператора ==, скорее всего, так как $ node-> nid выбирается как строка, а 90 - целое число, и он не может конвертировать ник «на лету».
Возможные решения, которые я нашел, в то время как Googling либо создавал «getter» для получения низа как целого (что звучит сложнее, чем необходимо), используя оператор ===; и я догадываюсь сам по себе, что если я конвертирую 90 в строку, это также сработает?
Теперь, выполняя тестовый прогон, === останавливает отображение ошибки, но мои исследования показывают, что === работает только тогда, когда и значение, и тип равны, и дано. Я сравниваю строку и integer, я предполагаю, что он всегда будет просто ложным.
Итак ...
- Я правильно говорю, что в PHP 90 (в виде строки) не == 90 (как целое число)?
- Правильно ли я говорю, что использование === вместо == НЕ является правильным способом сравнения строки и целого числа?
- Был бы $ node-> nid == (string) 90 {был ли правильный способ сравнения для этого оператора if? Каков наиболее правильный способ сделать это сравнение?
Сравнение строк с числами обычно делает то, что вы ожидаете. Сообщение об ошибке указывает, что '$ node-> nid' является' FieldItemList', а не строкой. – Barmar
Спасибо, Бармар. Я предположил, что nid будет строкой, потому что это то, что обычно находится в другом месте, и что FieldItemList был всего лишь классом PHP в Drupal 8. Неужели это тоже не так? –
У него может быть метод для преобразования в строку, поэтому вы можете использовать его там, где требуется строка, но на самом деле это не строка. – Barmar