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 :: Версия для печати :: Notice: Array to string conversion
Форумы портала PHP.SU » » Вопросы новичков » Notice: Array to string conversion

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

1. arimanecro - 28 Октября, 2016 - 17:48:43 - перейти к сообщению
Почему??? Не понял

PHP:
скопировать код в буфер обмена
  1. $_SESSION['d'][6] = 777;
  2.  
  3. $k = 6;
  4. echo "$_SESSION[d][$k]";


Ошибка:
Notice: Array to string conversion
и выводит: Array[6];
========
если вардамп, то всё норм:

2. Строитель - 28 Октября, 2016 - 17:53:08 - перейти к сообщению
arimanecro
PHP:
скопировать код в буфер обмена
  1. $_SESSION['d'][6] = 777;
  2.  
  3. $k = 6;
  4. echo $_SESSION['d'][$k];
  5.  
  6. var_dump($_SESSION['d'][$k]); // int 777
3. arimanecro - 01 Ноября, 2016 - 10:04:48 - перейти к сообщению
Строитель

это вы пошутили? Не понял Ха-ха
======
речь шла о выведении значения массива внутри двойных кавычек, а не о простом выводе через echo.
======
Я припоминал, что там дело в хитром синтаксисе, но поскольку давно с этим не сталкивался, то подзапамятовал, а сейчас вспомнил.

Вообщем для всех тех, кто согласился с ответом Строителя, а также для самого Строителя, поясняю:

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

PHP:
скопировать код в буфер обмена
  1. $a = ['6' => 'red' , '7'=>'green'];
  2. $k = 6;
  3. echo "Color: $a[$k]"; // Color: red


если массив имеет имя:

PHP:
скопировать код в буфер обмена
  1. $a['colors'] = ['6' => 'red' , '7'=>'green'];
  2. $k = 6;
  3. echo "Color: {$a['colors'][$k]}"; // Color: red

 

Powered by ExBB FM 1.0 RC1