Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Ошибка инициализации переменной
Форумы портала PHP.SU » » Вопросы новичков » Ошибка инициализации переменной

Страниц (3): [1] 2 3 »
 

1. jurvrn - 12 Августа, 2019 - 20:21:31 - перейти к сообщению
Вот такой код выдает ошибку на первой $attributes. Почему...
Предлагается задать переменной значение, но она вроде как вычисляется по условию совпадения!
PHP:
скопировать код в буфер обмена
  1. <div class="login-form-container-personalize">
  2.   <?PHP if ( $attributes['show_title'] ) : ?>
  3.       <h2><?PHP _e( 'Sign In (Авторизоваться)', 'personalize-login' ); ?></h2>
  4.   <?PHP endif; ?>
  5.  
  6.   <?PHP
  7.   wp_login_form(
  8.     array(
  9.       'label_username' => __( 'Email (или имя пользователя)', 'personalize-login' ),
  10.       'label_log_in' => __( 'Sign In (Войти)', 'personalize-login' ), //кнопка
  11.       'redirect' => $attributes['redirect'],
  12.     )
  13.   );
  14.   ?>
  15.  
  16.     <a class="forgot-password" href="<?PHP echo wp_lostpassword_url(); ?>">
  17.       <?PHP _e( 'Забыли свой пароль?', 'personalize-login' ); ?>
  18.     </a>
  19. </div>
2. Строитель - 12 Августа, 2019 - 20:52:31 - перейти к сообщению
jurvrn,
PHP:
скопировать код в буфер обмена
  1. <?PHP if ( isset($attributes['show_title']) ) : ?>
3. jurvrn - 12 Августа, 2019 - 23:02:55 - перейти к сообщению
Строитель пишет:
isset
пока не могу сказать спасибо кнопкой, спасибо!
4. Строитель - 12 Августа, 2019 - 23:12:51 - перейти к сообщению
jurvrn пишет:
пока не могу сказать спасибо кнопкой
Знаю - вы ещё долго не сможете нею воспользоваться, вам как минимум понадобится запостить ещё 45 постов Закатив глазки
5. jurvrn - 13 Августа, 2019 - 13:33:26 - перейти к сообщению
Строитель исправил по вашей подсказке, и теперь во втором случае phpstorm ругается на вторую переменную $attributes (11 строка). Во втором случае тоже можно использовать isset?

PHP:
скопировать код в буфер обмена
  1. <div class="login-form-container-personalize">
  2.   <?PHP if (isset( $attributes['show_title']) ) : ?>
  3.       <h2><?PHP _e( 'АВТОРИЗОВАТЬСЯ', 'personalize-login' ); ?></h2>
  4.   <?PHP endif; ?>
  5.  
  6.   <?PHP
  7.       wp_login_form(
  8.         array(
  9.           'label_username' => __( 'Email (или имя пользователя)', 'personalize-login' ),
  10.           'label_log_in' => __( 'Sign In (Войти)', 'personalize-login' ), //кнопка
  11.           'redirect' => $attributes['redirect'],
  12.           'value_remember' => true
  13.         )
  14.       );
  15.   ?>
  16.     <a class="forgot-password-personalize" href="<?PHP echo wp_lostpassword_url(); ?>">
  17.       <?PHP _e( 'Забыли свой пароль?', 'personalize-login' ); ?>
  18.     </a>
  19. </div>
6. LIME - 13 Августа, 2019 - 13:41:31 - перейти к сообщению
в зависимости от ожидаемого типа можно указать значение по умолчанию(тут пустая строка)
Хотя это не совсем то что делает ?? но можешь так считать или погугли
(Добавление)
Поэтому лучше использовать объекты чем массивы.
Чтоб не бегать по всему коду с кусочками локальных проверок в том числе
7. jurvrn - 13 Августа, 2019 - 14:11:00 - перейти к сообщению
LIME так подчеркивает красным два знака вопроса, появилось предупреждение что это только для php 7 версии - переключил, ошибка пропала...
8. LIME - 13 Августа, 2019 - 14:57:34 - перейти к сообщению
Если это phpstorm, то можно выставить в настройках версию для синтаксиса. Если если прописана в composer.json то достаточно сменить там, либо прописать если он есть вообще. То есть если в нем прописана то шторм не даст сменить.
9. jurvrn - 13 Августа, 2019 - 17:30:22 - перейти к сообщению
LIME у меня phpstorm, настроил на 7 версию. Но он чересчур умный - ругается на div в этом коде и предлагает удалить. )
10. LIME - 13 Августа, 2019 - 17:53:21 - перейти к сообщению
Не должен
Видимо ты не все показал или сломал что-то
11. jurvrn - 13 Августа, 2019 - 18:28:57 - перейти к сообщению
LIME извиняюсь что по "ерунде" отвлекаю, просто создание сайта моё хобби, я не программист, это для себя интересно, поэтому изучаю основы программирования на практике.

Вот скрин, наверно ошибка из-за того что файл *.php, а начинается с html
PS. смысл второго $$attributes - редирект URL на скрипт шорткода
12. LIME - 13 Августа, 2019 - 18:35:59 - перейти к сообщению
Отвлекаешь от постельного режима
Он не ругается, а услужливо предлагает удалить парный тег. То что под лампочкой это контекстное меню действий. Бывает разным в зависимости от того на что кликнешь. Потыкай
(Добавление)
Стили перенеси в начало.
13. jurvrn - 13 Августа, 2019 - 18:42:10 - перейти к сообщению
LIME почему в постели? у вас уже ночь?
потыкал - просто удаляется div (а он мне нужен). Перенос в начало <style> не меняет дела, тоже предлагает удалить этот div
14. LIME - 13 Августа, 2019 - 18:51:18 - перейти к сообщению
Режим по болезни
Потыкай в другие штуки смысле
На функцию например
И погугли что такое контекстное меню
А стили в принципе вверх перемести
Безотносительно
15. jurvrn - 13 Августа, 2019 - 20:24:29 - перейти к сообщению
LIME ок, буду изучать понемногу и скорейшего выздоровления!
у меня код усложнился и снова на $attributes ругается.
Ещё есть три случая - что в них правильнее использовать isset или ?? '' ?

PS в 1 и 2 случае сделал так

PHP:
скопировать код в буфер обмена
  1.         <?PHP if ( count( isset( $attributes['errors'] ) > 0 )) : ?>
  2.                 <?PHP foreach ( $attributes['errors'] ?? '' as $error ) : ?>


а 3 случае уже и нет ошибки...

PHP:
скопировать код в буфер обмена
  1. <style>
  2.     .login-form-container-personalize {background-color: #ebfff6;}
  3.     .forgot-password-personalize {color: #8c465b;}
  4. </style>
  5.  
  6. <div class="login-form-container-personalize">
  7.         <?PHP if ( isset($attributes['show_title'])) : ?>
  8.                 <h2><?PHP _e( 'Sign In - авторизация', 'personalize-login' ); ?></h2>
  9.         <?PHP endif; ?>
  10.  
  11.         <!-- Show errors if there are any -->
  12.         <?PHP if ( count( $attributes['errors'] ) > 0 ) : ?>
  13.                 <?PHP foreach ( $attributes['errors'] as $error ) : ?>
  14.                         <p class="login-error">
  15.                                 <?PHP echo $error; ?>
  16.                         </p>
  17.                 <?PHP endforeach; ?>
  18.         <?PHP endif; ?>
  19.  
  20.         <!-- Show logged out message if user just logged out -->
  21.         <?PHP if ( $attributes['logged_out'] ) : ?>
  22.                 <p class="login-info">
  23.                         <?PHP _e( 'Вы вышли с сайта. Хотите снова войти на сайт?', 'personalize-login' ); ?>
  24.                 </p>
  25.         <?PHP endif; ?>
  26.  
  27.         <?PHP
  28.                 wp_login_form(
  29.                         array(
  30.                                 'label_username' => __( 'E-mail (или логин/имя)', 'personalize-login' ),
  31.                                 'label_log_in' => __( 'Sign In (Войти на сайт)', 'personalize-login' ),
  32.                                 'redirect' => $attributes['redirect'] ?? '',
  33.                         )
  34.                 );
  35.         ?>
  36.  
  37.         <a class="forgot-password-personalize" href="<?PHP echo wp_lostpassword_url(); ?>">
  38.                 <?PHP _e( 'Забыли свой пароль?', 'personalize-login' ); ?>
  39.         </a>
  40.  
  41. </div>
  42.  

 

Powered by ExBB FM 1.0 RC1