2013-10-28 2 views
0

Я пытаюсь сделать api-вызов моей панели продавцов для моей хостинговой компании. Я успешно получать результаты, используя следующим:PHP Curl Post api call foreach loops

<?php 
    function getCountries() { 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, "myApiUrlHere"); 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, POST); 
     $result = curl_exec($ch); 
     foreach ($result as $country) { 
      echo '<select>'.$country. '</select>'; 
     } 

     curl_close($ch); 
    } 

?> 

Это приводит к большому блоку запутанного кода, который отображает код страны и название страны. (Не уверен, почему это повторяет, хотя.) Проблема находится внутри цикла foreach. с помощью:

foreach ($reult as $country) { 
echo '<select>'.$country. '</select>'; 
} 

Я получаю эту ошибку:

Warning: Invalid argument supplied for foreach() in D:\Hosting\11605285\html\assets\functions\hosting-functions.php on line 10 

Именно то, что я вижу в этом фото:

enter image description here

Так в принципе, я не понимая, почему страны все еще повторяются. И я не уверен, какой invalud аргумент я поставляю, на основе http://www.w3schools.com/php/php_looping_for.asp расположение моего кода является правильным для каждого цикла. Что я сделал не так? Пожалуйста помоги!

+0

Я предполагаю, что это потому, что я не помещаю результаты в массив, я просто эхо-сигнал, поэтому цикл foreach не имеет ничего, чтобы «зацикливаться». Но я не уверен. –

ответ

1

foreach ожидает массив, и он получает значение boolean.

Если вы хотите строку, а затем установить CURLOPT_RETURNTRANSFER, но он все еще может вернуться ложным, если не удалось, поэтому убедитесь, чтобы проверить, что:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

Вы можете, например, использовать explode(), чтобы разбить строку массив строк и см. раздел «см. также» в explode() documentation для аналогичных полезных функций.

+0

Это то, чего я боялся .... Любые ссылки или идеи о том, как я могу получить его в массив? –

+0

См. Мой обновленный ответ! –

+0

Митч Эванс, это ответ на ваш вопрос? –