You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP字符串下标赋值得到意外输出,求运算逻辑与输出生成过程解释

PHP代码运行逻辑与输出说明

你给出的代码如下:

<?php
$test = 'text1';
$test["02"] = "Hello";

var_dump($test);

实际输出为:string(5) "teHt1"


详细运算过程

整个输出结果由PHP的字符串偏移量访问特性决定,执行逻辑分步说明如下:

  1. 初始化变量:执行$test = 'text1';后,$test是长度为5的字符串,各整数下标对应的字符为:
    • 下标0:t
    • 下标1:e
    • 下标2:x
    • 下标3:t
    • 下标4:1
  2. 字符串赋值操作:执行$test["02"] = "Hello";时触发两次隐式类型转换:
    • 首先处理下标:字符串类型的下标"02"会被PHP强制转换为整数,结果为2,实际定位到字符串的第3个字符位置(下标从0开始计数)
    • 然后处理赋值内容:字符串的单个偏移位置仅支持存储1个字符,PHP会自动截取赋值内容"Hello"的第一个字符H完成赋值
      这行代码等价于$test[2] = 'H';,执行后原下标2位置的字符x被替换为H
  3. 输出结果:执行var_dump($test)时,修改后的字符串为teHt1,长度仍为5,和实际输出一致。

补充说明

PHP 7.1及以上版本中,使用字符串类型的下标访问/修改字符串会抛出E_WARNING级别的警告,但底层的类型转换、单字符截取逻辑依然保留。

内容的提问来源于stack exchange,提问作者Sumit Thakur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:18:03