как получить значение ключа массива с помощью curl (php) - PullRequest
2 голосов
/ 31 марта 2010

Я хочу использовать API, но он печатает много информации, и я не знаю, как получить несколько ключевых значений массива.

<?php
$query = "SELECT * FROM kvk WHERE adres='Wit-geellaan 158'";
$host  = "http://api.openkvk.nl/php/";
$url   = $host ."/". rawurlencode($query);

$curl = curl_init();
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0); 

curl_exec($curl);

curl_close($curl);
?>

Это мой php скрипт, и он показывает

array(array("RESULT"=>array("TYPES"=>array("int","bigint","varchar","varchar","varchar","varchar","varchar","int","int","smallint","smallint","int"),"HEADER"=>array("id","kvk","bedrijfsnaam","adres","postcode","plaats","type","kvks","sub","bedrijfsnaam_size","adres_size","verhuisd"),"ROWS"=>array(array("1303095","271242250000","Schoonmaakbedrijf Regio","Wit-geellaan 158","2718CK","Zoetermeer","Hoofdvestiging","27124225","0","23","16","0")))))

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

Привет, Vierri

Ответы [ 2 ]

2 голосов
/ 31 марта 2010
//Use the cURL setting to put the result into a variable rather than printing it    
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 

//store the result rather than print (as we set CURLOPT_RETURNTRANSFER)
$result = curl_exec($curl);
if ( $result === false ){
    //something went wrong, handle the error
}

//evaluate the array result and store it. (Please don't use this line in production code)
//as the $result string is from a untrusted source
eval('$array = '.$result.';');

//then you can, for example, get a list of the types
$types = $array[0]['RESULT']['TYPES'];


//or some keys
$keys = array_keys($array[0]['RESULT']);

Код выше опасен и, вероятно, не следует использовать как есть. Они могут добавить в ответ что-нибудь неприятное, и вы оцените это (строка eval), которая может повредить вашему серверу. Я бы проверил, есть ли у них лучший API, который не отправляет ответы в этом формате. (лучше json или XML)

Если нет, возможно, вы захотите вручную проанализировать массив ответов, а не использовать eval

0 голосов
/ 31 марта 2010

Чтобы получить все ключи и значения:

$server_output = curl_exec($curl);
var_dump($server_output);

Чтобы получить список ключей:

$server_output = curl_exec($curl);
ksort($server_output);
foreach ( $server_output AS $key => $val ) {
  echo "$key\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...