Ориентация на конкретную строку в массиве Json при декодировании - PullRequest
0 голосов
/ 21 августа 2010

Мне нужно декодировать и конкретно указывать первый URL только в этом массиве:

[{
"longDateTime":"3:00pm Saturday 21 August 2010",
"shortDateTime":"3:00pm Sat",
"url":"\/Pics\/ob\/7d778-127a9294cec0-12a929779a2b.Img.jpeg"
},{
"longDateTime":"2:00pm Saturday 21 August 2010",
"shortDateTime":"2:00pm Sat",
"url":"\/Pics\/ob\/7d778-12a9275de040-12a92760c93c.Img.jpeg"
},{
"longDateTime":"1:00pm Saturday 21 August 2010",
"shortDateTime":"1:00pm Sat",
"url":"\/Pics\/ob\/7d778-12a79226f1c0-12a79229bb4c.Img.jpeg"
},{
"longDateTime":"12:00pm Saturday 21 August 2010",
"shortDateTime":"12:00pm Sat",
"url":"\/Pics\/ob\/7d778-12a917f00340-12a91f3437fd.Img.jpeg"
},{
"longDateTime":"11:00am Saturday 21 August 2010",
"shortDateTime":"11:00am Sat",
"url":"\/Pics\/ob\/7d778-12a91b914c70-172a91bf8987.Img.jpeg"
},{
"longDateTime":"10:00am Saturday 21 August 2010",
"shortDateTime":"10:00am Sat",
"url":"\/Pics\/ob\/7d778-12a918226470-12a91784f47a.Img.jpeg"
}
]

Сценарий, который я использую, работает для получения последнего или, может быть, случайного URL-адреса, но, как я уже сказал, мне действительно нужно, чтобы он был настроен только на первый URL-адрес - может кто-нибудь изменить мой сценарий, чтобы я мог добиться этого, пожалуйста.

<?php
$radar_dir='./radar/';



    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,'http://somesite.com/public/test');
    $fp = fopen($radar_dir.'test.txt', 'w');
    curl_setopt($ch, CURLOPT_FILE, $fp);
    curl_exec ($ch);
    curl_close ($ch);
    fclose($fp);

?>




<?php
{

            $txt_file = $radar_dir.'test.txt';
            if(file_exists($txt_file)==false)
            $img = $error_img;
        else
        {
            $handle = fopen($txt_file, 'r');
            $obj = fread($handle,filesize($txt_file));
            $array_of_objects = json_decode($obj);
            $object = $array_of_objects[0];
            $url = ($object->url); 
            $img =   "http://somesite.com" . $url;
        }
        copy($img,$radar_dir.'test.png');

}
?>

Буду очень признателен за помощь.

1 Ответ

0 голосов
/ 21 августа 2010

Ну, вот доказательство того, что ваш код, как есть, отображает правильный URL .

Для ясности выводим /Pics/ob/7d778-127a9294cec0-12a929779a2b.Img.jpeg (1-й URL), а не /Pics/ob/7d778-12a918226470-12a91784f47a.Img.jpeg (последний URL).

Однако я бы просто использовал $array_of_objects[0]->url; напрямую.

Итак, ваш код работает нормально, но ваше декодирование немного сложнее. Заменить

$array_of_objects = json_decode($obj);
$object = $array_of_objects[0];
$url = ($object->url);

С:

$array_of_objects = json_decode($obj);
$url = $array_of_objects[0]->url;

Что более важно, я бы проверил, что ваш copy() действительно работает, используя что-то вроде:

if ( !copy($img, $radar_dir.'test.png') ) 
{
    echo "failed to copy $img...\n";
}

В этот момент кажется, что $img является URL-адресом jpeg, и вы копируете его в .../test.png, fwiw.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...