首页 > 解决方案 > 函数调用返回数组输出的第一个字符

问题描述

抱歉,不完全确定如何表达这一点。

我有以下调用 2 个函数的 PHP 脚本。两者都输出一个已解码的数组。我只需要每个数组的 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";
  }
}
?>

第一个函数 getTrunkDomain() 从一个函数中提取客户端名称列表

第二个函数 getDomTerr() 使用第一个函数的输出作为 CURL 输入,为客户端输出一个全局帐户。

我已经让脚本正常工作,但它只返回 getDomTerr() 结果的第一个字符。

功能一

$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);

if ($err) {
  echo "Error #:" . $err;
} else {
    return $response;
}
}

功能二

$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

其中“Territory is u”应该有一个多字符结果,而不仅仅是字母 u

关于为什么会这样的任何想法。如果我使用“域”的手动输入直接调用函数 2,它将返回全长字符串。

由于存在敏感信息,我无法显示完整的 curl CURLOP_URL,但它是失眠呼叫的输出,我在每个单独的呼叫中都在寻找正确的输出。

我是这方面的菜鸟,所以寻求一些帮助。

标签: phparraysjsoncurlscripting

解决方案


原来我已经在函数 2 中设置了 ['territory']

由于该函数已经设置了领土的返回,我只引用了输出的 0 位置,而使用 getDomTerr($dom)[0] 它只返回了第一个字母。

删除了 [0],它现在返回完整的领土名称


推荐阅读