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 :: Версия для печати :: Возвращаемая строка json_encode()
Форумы портала PHP.SU » » Вопросы новичков » Возвращаемая строка json_encode()

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

1. zzzzzz - 20 Июня, 2014 - 22:55:19 - перейти к сообщению
Мир вашему дому.

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

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

Огорчение
(Добавление)
Стоило написать, как ответ тут же нашелся
JSON_FORCE_OBJECT
2. Viper - 22 Июня, 2014 - 16:05:38 - перейти к сообщению
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>';
3. zzzzzz - 22 Июня, 2014 - 21:30:23 - перейти к сообщению
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 );


Второй вариант работает так как нужно, хотя в первом варианте при инициализации переменной я явно указал тип как объект. Разъясните пожалуйста логику.
4. LIME - 22 Июня, 2014 - 21:54:04 - перейти к сообщению
да потому что в 1 случае приведенный тип никуда не сохраняется и не передается
в воздух
(Добавление)
PHP:
скопировать код в буфер обмена
  1. $var +  2;
  2. echo $var;
  3.  
  4. echo $var + 2;
похоже да?
5. DelphinPRO - 22 Июня, 2014 - 22:05:05 - перейти к сообщению
zzzzzz пишет:
я явно указал тип как объект.

вот тут заблуждение.
ты не указал тип, а привел к типу. преобразовал массив в объект. Но, как сказал Lime - приведенный результат ушел в никуда.
6. LIME - 22 Июня, 2014 - 22:07:36 - перейти к сообщению
$result = (object) $mysqli->...
7. zzzzzz - 22 Июня, 2014 - 22:22:04 - перейти к сообщению
ааа блин все понял, спасибо

 

Powered by ExBB FM 1.0 RC1