#php
#php
Вопрос:
Я обнаружил эту ошибку отладки: PHP устарел: Unparenthesized a ? b : c ? d : e
устарел. Используйте либо (a ? b : c) ? d : e
или a ? b : (c ? d : e)
в /home/ptl4lmmge5kb/public_html/wp-content/plugins/give-recurring/includes/admin/class-subscriptions-list-table.php в строке 143
Код из строки 143 плагина показывает это:
( ( 'all' === $key amp;amp; empty( $current ) ) ) ? 'class="current"' : ( $current == $key ) ? 'class="current"' : '',
Кто-нибудь может сказать мне, куда поместить круглые скобки?
Комментарии:
1. Это зависит от того, каков ваш результат, скобки работают так же в программировании, как и в математике, все, что находится внутри скобок, сначала оценивается, а затем сравнивается с внешним
2.
'all' === $key amp;amp; empty($current) ? 'class="current"' : ($current == $key ? 'class="current"' : '')
слишком много ненужных () и там, где они нужны, не в нужном месте, кстати, по этой причине это плохая практика для вложенных тернеров3. вместо этого напишите так:
'all' === $key amp;amp; empty($current) || $current === $key ? 'class="current"' : ''
4. Лоуренс прав, хотя включение пути
/wp-content/plugins/
меня немного беспокоит. Это код, который вы написали, или код в каком-то стороннем плагине WordPress? Если это позже, я бы не ожидал редактировать этот код напрямую, а скорее обновить плагин, который вводит этот код.5. Нет, я не пишу код. Это сторонний плагин под названием GiveWP — повторяющиеся пожертвования.
Ответ №1:
Принимая их первый запрос, они просят вас использовать формат, подобный этому (a ? b : c) ? d : e
, в этом
( ( 'all' === $key amp;amp; empty( $current ) ) ) ? 'class="current"' : ( $current == $key ) ? 'class="current"' : ''
в этом случае разбейте его на их терминологию:
a ( 'all' === $key amp;amp; empty( $current ) )
— здесь была ненужная пара скобок, я их удалил, поскольку у нас и так достаточно проблем с сортировкой скобок
b — это 'class="current"'
c является ( $current == $key)
d — это 'class="current"'
e — это ''
они говорят, что хотят, чтобы вы разъяснили, что будет проверяться для второго? заключив условие и результат первого в круглые скобки
Первый: (a ? b : c)
который становится ( ( 'all' === $key amp;amp; empty( $current ) ) ? 'class="current"' : ( $current == $key ) )
Поэтому они просят вас использовать:
( ( 'all' === $key amp;amp; empty( $current ) ) ? 'class="current"' : ( $current == $key ) ) ? 'class="current"' : ''