#php #arrays #json #curl #scripting
#php #массивы #json #curl #сценарии
Вопрос:
Извините, не совсем уверен, как это сформулировать.
У меня есть следующий PHP-скрипт, который вызывает 2 функции. Оба выводят декодированный массив. Мне нужна только 1 часть каждого массива.
{
<?php
require_once('sipTrunkDomain.php');
//setup curl connection
//get list of SIP Trunk domains, uses CURL GET, and only return the domain header
function getTrunkDomain(){
$json = sipTrunkDomain();
//$r = json_encode($json);
$arr = json_decode($json,true);
return $arr;
}
//returns list of trunk domains
$trunks = getTrunkDomain();
//sets domains as an array to be passed to next function
if(!is_array($domain))
$domain = array();
foreach ($trunks as $trunk){
$domain[] = $trunk['domain'];
}
//print_r($domain);
//uses domain name from above as a variable for the domain information API call
foreach ($domain as $dom){
if (empty($dom)){
echo "No Territory";
}else{
print $dom . " - Territory is " . getDomTerr($dom)[0] . "n";
}
}
?>
1-я функция getTrunkDomain() извлекает список имен клиентов из одной функции
2-я функция getDomTerr() использует вывод первой функции в качестве ввода CURL для вывода глобальной учетной записи для клиента.
У меня работает скрипт, но он возвращает только первый символ результатов getDomTerr().
Функция 1
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "Error #:" . $err;
} else {
return $response;
}
}
Функция 2
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "Error #:" . $err;
} else {
$temp = json_decode($response,true);
//print_r($temp);
return $temp[0]['territory'];
}
}
вывод при запуске:
domain1 - Territory is u
domain2 - Territory is a
domain3 - Territory is a
domain4 - Territory is u
где «Территория — это u» должен иметь многосимвольный результат, а не просто букву u
Любая идея относительно того, почему это так. Если я вызываю функцию 2 напрямую с помощью ручного ввода для «домена», она возвращает строку полной длины.
Поскольку существует конфиденциальная информация, я не могу показать полный curl CURLOP_URL , но это результат вызова insomnia с правильным выводом, который я ищу в каждом отдельном вызове.
Я новичок в этом, поэтому ищу некоторую помощь.
Ответ №1:
оказывается, я уже устанавливал [‘территория’] в функции 2
поскольку функция уже установила возврат территории, я ссылался только на местоположение 0 вывода, а с помощью getDomTerr($dom)[0] он возвращал только первую букву.
удалено [0], и теперь оно возвращает полное название территории