2010-03-31 2 views
2

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

<?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
//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 будет лучше)

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

+0

Привет Thnx за ответ, Анализировать ошибка: синтаксическая ошибка, неожиданный $ конец в /var/www/clients/client5/web6/web/test.php(20): Eval() 'd код на линии 1 Предупреждение: array_keys() [function.array-keys]: первым аргументом должен быть массив в /var/www/clients/client5/web6/web/test.php в строке 27 - ошибка, которую я получаю, когда использую eval – x4tje

+0

@ Vierri исправил код. – Yacoby

+0

Да, он работает, спасибо за помощь. – x4tje

0

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

$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"; 
} 
+0

Ответом является строка не является массивом. 'ksort' и' foreach' ожидают массивы. – Yacoby