php将数组键变成数字,php – 使用数字键将数组转换为对象

是的,他们只是被锁定,除非被抛回阵列. PHP中有几个“Gotchas”,例如在旧版本中,您可以将常量定义为数组,但是不能访问其元素.即使现在你可以定义一个常量作为一个资源(例如,define(‘MYSQL’,mysql_connect());)虽然这导致相当不可预测的行为,并且应该避免.

一般来说,如果可能的话,最好避免数组到对象的转换.如果您真的需要这样做,请考虑创建一个新的stdClass实例,然后手动重命名所有变量,例如_0,_1等.

$a = array('cat','dog','pheasant');

$o = new stdClass;

foreach ($a as $k => $v) {

if (is_numeric($k)) {

$k = "_{$k}";

}

$o->$k = $v;

}

编辑:刚刚对这个假设做了一个快速测试,是的,他们在对象语境中正式地“不存在”数据被存储,但是不可能访问,因此是最终的私人成员.这是测试:

$a = array('one','two','three');

$o = (object)$a;

var_dump(property_exists($o, 1), property_exists($o, '1'));

输出的是:

bool(false)

bool(false)

再次编辑:有趣的旁注,以下操作返回false:

$a = array('one','two','three','banana' => 'lime');

$b = array('one','two','banana' => 'lime');

$y = (object)$a;

$z = (object)$b;

var_dump($y == $z);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值