Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как JSON перевести в массив для PHP?
 
 автор: Intendant   (21.02.2011 в 15:42)   письмо автору
 
 

Здравствуйте, такой вопрос.

к примеру есть файл json http://api-fotki.yandex.ru/api/users/mikhalych4/photo/62107/?format=json

как можно данный файл перевести в массив


{
  "edited": "2010-12-01T18:15:09Z", 
  "updated": "2010-12-01T18:15:09Z", 
  "hideOriginal": true, 
  "img": {
    "XXS": {
      "width": 75, 
      "href": "http://img-fotki.yandex.ru/get/3/mikhalych4.7/0_f29b_4332c63a_-5-XXS", 
      "height": 75
    }, 


/////    перевести так 
echo $array['img']['XXS']['img']['href'];


Я нашел для (так сказать) для первого уровня http://www.php.net/manual/en/function.json-decode.php


а вот для последующего "XXS" вывести не могу.


ЗЫ: Простите, но объяснить я по другому не могу.

  Ответить  
 
 автор: sim5   (21.02.2011 в 15:50)   письмо автору
 
   для: Intendant   (21.02.2011 в 15:42)
 

Что значит "для последующего..."? json_decode вернет полный массив, все его вложения.

  Ответить  
 
 автор: Intendant   (21.02.2011 в 16:01)   письмо автору
 
   для: sim5   (21.02.2011 в 15:50)
 

да выводит, но как его правильно вывести


<? 

$json
"код выше ";

/// так выводится один
$obj json_decode($json);
print 
$obj->{'edited'};  //  выводит ( 2010-12-01T18:15:09Z  )


 //как вывести  для внутренной?
$obj json_decode($json);
print 
$obj->{'img''XXS''href'};  // чтобы вывело   ( http://img-fotki.yandex.ru/get/3/mikhalych4.7/0_f29b_4332c63a_-5-XXS  )
?> 



XSS ? это точно не атака=) Это вывод фоток с yandex на свой сайт

  Ответить  
 
 автор: neadekvat   (21.02.2011 в 16:10)   письмо автору
 
   для: Intendant   (21.02.2011 в 16:01)
 

<?php
echo $obj->img->XXS->href;

  Ответить  
 
 автор: Intendant   (21.02.2011 в 16:15)   письмо автору
 
   для: neadekvat   (21.02.2011 в 16:10)
 

Большое спасибо, ужас, я же весь инет облазил. Благодарю =) =) =) =) =) =)

  Ответить  
 
 автор: Intendant   (21.02.2011 в 17:21)   письмо автору
 
   для: neadekvat   (21.02.2011 в 16:10)
 

{
  "updated": "2010-11-30T01:15:41Z", 
  "links": "uyu", 
  "author": "intendantn", 
  "title": "intendantn на Яндекс.Фотках", 
  "entries": [
    {
      "edited": "2010-11-30T01:15:41Z", 
      "updated": "2010-11-30T01:15:41Z", 
      "hideOriginal": false, 
      "img": {
        "XXS": {
          "width": 75, 
          "href": "http://img-fotki.yandex.ru/get/5400/intendantn.0/0_339ef_f2d823d_XXS",  //// как вывести это
          "height": 75
        }, 
        "M": {
          "width": 268, 
          "href": "http://img-fotki.yandex.ru/get/5400/intendantn.0/0_339ef_f2d823d_M", 
          "height": 300
        }
      },

{
      "edited": "2010-11-30T01:15:41Z", 
      "updated": "2010-11-30T01:15:41Z", 
      "hideOriginal": false, 
      "img": {
        "XXS": {
          "width": 75, 
          "href": "http://img-fotki.yandex.ru/get/5400/intendantn.0/0_339ef_f2d823d_XXS",  //// как вывести это
          "height": 75
        }, 
        "M": {
          "width": 268, 
          "href": "http://img-fotki.yandex.ru/get/5400/intendantn.0/0_339ef_f2d823d_M", 
          "height": 300
        }
      } , .........
   ], 
  "id": "urn:yandex:fotki:intendantn:photos", 
  "imageCount": 0
}



как вывести в массиве эти т ссылок?


Такой запрос не действует, там уже массив, но я незнаю как его разобрать

  Ответить  
 
 автор: sim5   (21.02.2011 в 17:23)   письмо автору
 
   для: Intendant   (21.02.2011 в 17:21)
 

foreach()

  Ответить  
 
 автор: Intendant   (21.02.2011 в 17:44)   письмо автору
 
   для: sim5   (21.02.2011 в 17:23)
 

с помощью foreach() чтото не получается, если не тяжело можете написать запрос, как вывести к примеру первое изображение?

<?
echo $obj->entries[0]->img->XXS->href;

?>



меня сбивают квадратные скобки

зарание спасибо

  Ответить  
 
 автор: sim5   (21.02.2011 в 17:58)   письмо автору
 
   для: Intendant   (21.02.2011 в 17:44)
 

Вы бы свой json привели, часть его и без ошибок, а то что-то вроде бы как ошибка в нем - "entries", первое вложение.

  Ответить  
 
 автор: Intendant   (21.02.2011 в 18:05)   письмо автору
 
   для: sim5   (21.02.2011 в 17:58)
 

 <?
$json 
file_get_contents("http://api-fotki.yandex.ru/api/users/intendantn/photos/?format=json") ;
$obj json_decode($json);


?>



Вот полный. Здесь точно ошибок не должно быть.

  Ответить  
 
 автор: sim5   (21.02.2011 в 18:20)   письмо автору
 
   для: Intendant   (21.02.2011 в 18:05)
 

Ну я не знаю что значит получить изображение, ну например, их путь:
<?
foreach($obj->entries as $arr) echo $arr->img->XXS->href "<br>";

  Ответить  
 
 автор: Intendant   (21.02.2011 в 18:22)   письмо автору
 
   для: sim5   (21.02.2011 в 18:20)
 

Вот так нужно было, большое человеческое спасибо=)

  Ответить  
 
 автор: neadekvat   (21.02.2011 в 18:21)   письмо автору
 
   для: Intendant   (21.02.2011 в 17:21)
 

<?php
    
foreach($obj->img as $val) {
        echo 
$val->href '<br />';
    }

  Ответить  
 
 автор: Intendant   (21.02.2011 в 18:23)   письмо автору
 
   для: neadekvat   (21.02.2011 в 18:21)
 

Вот так нужно было, большое человеческое спасибо=)

  Ответить  
 
 автор: Trianon   (21.02.2011 в 15:55)   письмо автору
 
   для: Intendant   (21.02.2011 в 15:42)
 

что такое "последующий" XXS ?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования