关联数组返回字符串的第一个字符

时间:2016-06-14 15:33:00

标签: php

我有3个课程:serverclientservice。用于实现SOAP Web服务。

service构造一个关联数组,然后将其传递给client,最后将其传递给server。并发回一条回复。

相关代码:

service.php

<?php
include './client.php';

$id_array = array("country_code"=> "+36");
echo $client->getName($id_array);
?>

client.php

public function getName($id_array)
{
    return $this->instance->__soapCall('getCountryName', $id_array);
}

server.php

public function getCountryName($id_array)
    {
    $country_code = array();

    $country_code = $id_array['country_code'];
//this return value to debug (not actual function)
    return $country_code;
}

问题发生在:$country_code = $id_array['country_code']; 此时$country_code的值为+,而不是+36

为什么会这样?

P.S。 __soapCall将$id_array传递给getCountryName()中的server.php函数 此外,如果我使用长度为1的$country_code,一切都按预期工作。

1 个答案:

答案 0 :(得分:2)

我不是SOAP用户,但我相信__soapCall('getCountryName', $id_array)应该是__soapCall('getCountryName', array($id_array))

为什么呢?因为每个数组索引都被映射到被调用的服务器方法中的参数。

所以,我认为在服务器方法中,$id_array的值是国家/地区代码字符串的第一个字符,如果您在方法参数列表中添加了$id_array2,那么可能是字符串中的第二个。

如果情况确实如此,那么您可能会抱怨通知/警告(检查您的错误日志)抱怨非法抵消。