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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Возвращаемая строка json_encode()

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
zzzzzz
Отправлено: 20 Июня, 2014 - 22:55:19
Post Id


Гость


Покинул форум
Сообщений всего: 117
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Мир вашему дому.

Дано :: $arr = [0 => '10', 1 => '20'];
Действие :: json_encode($msv)
Результат :: ["10","20"]

А нужен такой вид - {'0':''10 , '1':'20'}

Огорчение
(Добавление)
Стоило написать, как ответ тут же нашелся
JSON_FORCE_OBJECT

(Отредактировано автором: 20 Июня, 2014 - 22:55:56)

 
 Top
Viper
Отправлено: 22 Июня, 2014 - 16:05:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




zzzzzz
PHP:
скопировать код в буфер обмена
  1. $arr = array('a', 'b');
  2. $obj = (object)array('a', 'b');
  3.  
  4. echo '<pre>';
  5.  
  6. echo json_encode($arr)."\n";
  7. echo json_encode($obj);
  8.  
  9. echo '</pre>';


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
zzzzzz
Отправлено: 22 Июня, 2014 - 21:30:23
Post Id


Гость


Покинул форум
Сообщений всего: 117
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Viper, это круто, указание типа работает. Спавсибо.

Еще один вопросик )

Почему это
PHP:
скопировать код в буфер обмена
  1. (object) $result = $mysqli->query( "SELECT * FROM menu" )->fetch_all( MYSQLI_ASSOC );
  2. echo json_encode( $result );

!= этому
PHP:
скопировать код в буфер обмена
  1. $result = $mysqli->query( "SELECT * FROM menu" )->fetch_all( MYSQLI_ASSOC );
  2. echo json_encode( (object)$result );


Второй вариант работает так как нужно, хотя в первом варианте при инициализации переменной я явно указал тип как объект. Разъясните пожалуйста логику.
 
 Top
LIME
Отправлено: 22 Июня, 2014 - 21:54:04
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




да потому что в 1 случае приведенный тип никуда не сохраняется и не передается
в воздух
(Добавление)
PHP:
скопировать код в буфер обмена
  1. $var +  2;
  2. echo $var;
  3.  
  4. echo $var + 2;
похоже да?
 
 Top
DelphinPRO
Отправлено: 22 Июня, 2014 - 22:05:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




zzzzzz пишет:
я явно указал тип как объект.

вот тут заблуждение.
ты не указал тип, а привел к типу. преобразовал массив в объект. Но, как сказал Lime - приведенный результат ушел в никуда.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
LIME
Отправлено: 22 Июня, 2014 - 22:07:36
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




$result = (object) $mysqli->...
 
 Top
zzzzzz
Отправлено: 22 Июня, 2014 - 22:22:04
Post Id


Гость


Покинул форум
Сообщений всего: 117
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




ааа блин все понял, спасибо
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB