我想将list()语句与对象结合使用。
$tuple = new Tuple();
// ..
list ($guestbook, $entry, $author) = $tuple;
如果$tuple
是一个包含三个元素的数组,这将有效。但它是一个对象。
有没有办法不使用Tuple
(返回那种数组)的方法,比如实现一个我还不知道的花哨的原生界面?
答案 0 :(得分:1)
见上一篇文章: Convert PHP object to associative array
我假设(我没有测试过)你可以这么做:
$tuple = new Tuple();
list ($guestbook, $entry, $author) = (array) $tuple;
答案 1 :(得分:1)
您可以实现接口ArrayAccess
来执行此操作:
class Tuple implements ArrayAccess {
private $arr;
public function __construct($arr) {
$this->arr = $arr;
}
public function offsetExists($offset) {
return array_key_exists($offset, $this->arr);
}
public function offsetGet($offset) {
return $this->arr[$offset];
}
public function offsetSet($offset, $value) {
return $this->arr[$offset] = $value;
}
public function offsetUnset($offset) {
unset($this->arr[$offset]);
}
}
$tuple = new Tuple([1, 2, 3]);
list($am, $stram, $gram) = $tuple;
echo $am;
echo $stram;
echo $gram;
// outputs: 123
答案 2 :(得分:0)
你可以这样做:
$tumple = new Tumple();
$properties = get_object_vars($tumple);// ["guestbook" => "Feel", "entry" => "Good", "author" => "Inc"];