未设置字符串索引时,字符串长度未递减


string length not decremented when unset string index

我试图通过一次从字符串中删除一个字符来创建回文。在取消设置字符串索引时。字符串长度没有减少。

$s = "arun";
var_dump ($s);
$s[1] = NULL;
var_dump($s) ;

输出

string(4) "arun"
string(4) "aun"

为什么长度没有减少。

因为您并没有以任何方式减少字符串,只是替换了一个字符。

您的字符串将从a r u n转换为a (null) u n,它仍然有四个字符长。

要实现您的目标,请使用substra_replace

<?php
$s = "arun";
var_dump ($s); //arun
$s = substr_replace($s, "", 1,1);
var_dump($s); //aun

您并没有真正删除任何内容,只是将$s[1]设置为null。那么如果它为空呢?$s[1]仍然是字符串的一部分。

要解决此问题,use substr()

编辑:

示例:

$s = "arun";
var_dump ($s);
$s[1] = NULL;
$s = $s[0].substr($s,2); // get the first index and "un" then concatenate them
var_dump($s) ;

这个数组仍然是4个元素,但在$s[1]中只是null

这是因为输出中的字母如下所示:aNULLun

将字符串拆分为字母,取消设置特定索引,再次连接在一起:

$s = "arun";
$s = str_split($s);
unset($s[1]);
var_dump(implode('', $s));

示例