我正在使用API,它要求我提供List <String>
值。我正在写PHP,似乎只能在c#中找到这种类型。
是一个数组吗?逗号分隔的字符串?
PHP没有泛型类型的概念。
可以使用array():
PHP $arr = array();
$arr[0] = 'foo';
在 c#中的等效
List<string> arr = new List<string>();
arr.Add("foo");
我猜你可以使用一个简单的数组:
$list = array('string1', 'string2', 'string3');
或
$list = array();
$list[] = 'string1';
$list[] = 'string2';
$list[] = 'string3';
等。
是一个数组吗?
是的,是
逗号分隔的字符串?
不,它不是
PHP是无类型的,所以你可以使用你的数组为所有类型的变量,使用以下代码:
$arr=array();
如果您正在调用SOAP,那么您应该只使用php的SoapClient类,它可以很好地将wsdl中看到的类型转换为本机php结构,通常是数组或stdClass对象的实例,这是php的类类型,可以存储任何值作为属性。您还可以做更有趣的事情,比如告诉php的SoapClient将返回类型映射到您自己的php对象。
见http://us2.php.net/SoapClient也请参阅构造函数的定义http://us2.php.net/manual/en/soapclient.soapclient.php,其中一个名为'classmap'的选项解释了如何将返回的类型映射到您自己的类。还有一个'typemap'选项可以将返回类型映射到您自己的类型
这个线程是旧的,但我认为代码可能会有所帮助:
class ClientList implements IteratorAggregate {
protected $data;
public function __construct(Client ...$data){
$this->data = $data;
}
public function getIterator(): Traversable {
return new ArrayIterator($this->data);
}
}
class Client {
}
$clients[] = new Client();
$clients[] = new Client();
$clientList = new ClientList(...$clients);
foreach($clientList as $client){
var_dump($client);
}
现在,当你插入一个字符串,数字或东西,不是一个客户端实例,你会得到错误,感谢IteratorAggregate
你可以迭代ClientList对象。