时间:2014-02-15所属栏目: PHP/PHP框架 来源: 未知 热度:
群里提及 php 的数组 key 的范例转换题目,
好比 $a = array(’123′=>’abc’); var_dump($a); 会发明 key 会酿成整数。用 $a['123'] 这种方法会见数组的时辰,也会先把 key 转换成整数。溘然想到能不能结构一个现实 key 为字符串情势的数字的数组,可能整数型属性名的工具(工具内部也是个 hash,也同时支持整数和字符串 key)。试了一些要领没乐成。然后看到了这篇对象
http://www.laruence.com/2010/05/26/1541.html
http://syre.blogbus.com/logs/65815204.html
就想到了个结构那样的数组和工具的要领。
$o = new stdClass();
$o->{'123'} = 1;
$a = (array) $o;
var_dump($a);
var_dump(isset($a['123']));
var_dump(isset($a[123]));
$a = array(1,2,3);
$o = (object) $a;
var_dump($o);
var_dump(isset($o->{1}));
var_dump(isset($o->{'1'}));
这样就结构出了正常方法没法会见的数组下标和工具属性*(会见工具属性时会把属性名转成字符串)。
还可以干一件更 BT 的工作,会见工具的私有或掩护属性。
class Test {
private $a = 1;
protected $b = 2;
public $c = 3;
}
$o = new Test();
$a = (array) $o;
var_dump($a);
var_dump($a["\0Test\0a"]);
var_dump($a["\0*\0b"]);