首页 > 解决方案 > 得到以下代码的奇怪输出。我需要解释它如何计算输出

问题描述

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

var_dump($test);

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

标签: php

解决方案


在第一行 $test 将值存储为 'text1' 开始为字符串从左到右从 0 到 (stringlength-1) 给出偏移值,并且字符串中的每个字符字节大小将占用一个字节的内存。

IE,

...

$test[0] =>'t';
$test[1] =>'e';
$test[2]=>'x';
$test[3]=>'t';
$test[4]=> '1';

...

因此,$test[2] 当前值为 'x' 但我们试图在 $test["02"] = "Hello"; 行中覆盖 但它的内存大小只有一个字节,所以它只存储了 'Hello' 中字符串中的 'H'

这就是为什么当你转储变量时 $test 值现在是"teHt1"


推荐阅读