2014-10-08 2 views
0

Я могу ответить на эхо, я получаю только штраф в функции request_callback, поэтому я думал, что просто сохранить ответ в массиве associative_array [], однако это дает просто одиночные записи, такие как массив, протираются после каждой записи.PHP-cURL Добавление записи в массив в функции, не работающей

Я использую https://github.com/LionsAd/rolling-curl/blob/master/RollingCurl.php

<?php 
# Get the all the items numbers 
$url1 = "http://api.guildwars2.com/v2/commerce/listings"; 
$response1 = file_get_contents($url1); 
$data1 = json_decode($response1, true); 

#retrieve item names and link with numbers 
function request_callback($response) { 
    $temporary_array = json_decode($response, true); 
    $associative_array[] = array('name' => $temporary_array['name'],'id' => $temporary_array['id']); 
    // array[] places the new entry at end of urls stack, faster then array_push($array, new entry); 
    print_r ($associative_array); 
    echo "\n"; 
} 

# Multiple curl request 
require("rollingcurl.php"); 

for ($x=0;$x<5;$x++){ 
     $itemurl1 = "http://api.guildwars2.com/v2/items/{$data1[$x]}"; 
     $urls[$x]= $itemurl1; 
    } 
$rc = new RollingCurl("request_callback"); 
$rc->window_size = 20; 
foreach ($urls as $url) { 
    $request = new RollingCurlRequest ($url) ; 
    $rc -> add ($request) ; 
} 
$rc->execute(); 


?> 
+0

Откуда берутся '$ urls'? Можете ли вы опубликовать «var_dump»? – Machavity

+0

ошибка начинающего, чтобы попытаться загрузить все данные параллельно. уважать серверы –

ответ

0

Ваш массив является локальным для вашей функции, следовательно, для каждого звонка. Попробуйте добавить глобальную декларацию, и вы получите то, что ожидаете (все значения);

function request_callback($response) { 
    global $associative_array; 
    $temporary_array = json_decode($response, true); 
    $associative_array[] = array('name' => $temporary_array['name'],'id' => $temporary_array['id']); 
    // array[] places the new entry at end of urls stack, faster then array_push($array, new entry); 
    print_r ($associative_array); 
    echo "\n"; 
} 
+0

Спасибо, что записи в массиве добавлены! Но я думаю, что читаю во время поиска, что глобальный - это плохая практика? – Singul4r1ty

0

Я бы создать свой массив за пределами вашей функции. Похоже, вы создаете новый массив при каждом вызове функции.

$associative_array = array(); 
function request_callback($response) { 
     global $associative_array; 
     $temporary_array = json_decode($response, true); 
     $associative_array[] = array('name' => $temporary_array['name'],'id' => $temporary_array['id']); 
     // array[] places the new entry at end of urls stack, faster then array_push($array, new entry); 
     print_r ($associative_array); 
     echo "\n"; 
} 
Смежные вопросы