> 백엔드 개발 > PHP 튜토리얼 > 这是一种什么情况!该怎么处理

这是一种什么情况!该怎么处理

WBOY
풀어 주다: 2016-06-13 13:00:23
원래의
840명이 탐색했습니다.

这是一种什么情况!!!
比如说:

$str="abcadef";
$strone=$str[0];
for($i=0;$i if($strone==$str[$i]){
$str[$i]="";
}
}
var_dump($str);


显示出:

string(7) "bcdef";

请问一下,为什么这个字符串还是7个长度,有没有什么办法,让他变成5个的长度,



------解决方案--------------------

$str="abcadef";<br />
$strone=$str[0];<br />
$r = '';<br />
for($i=0;$i<strlen($str);$i++){<br />
  if($strone != $str[$i]){<br />
    $r .= $str[$i];<br />
  }<br />
}<br />
$str = $r;<br />
var_dump($str);
로그인 후 복사

------解决方案--------------------
解决方法楼上各位都说了,但为了避免你重蹈覆辙,说说理论的事――

程序看上去是“合理”的,但实际上是错误的,关键在于php核心存储变量的方式

php对于一个字符串变量赋值后是记录了长度的,要改变这个长度需要重新赋值
$str[x]='' 这种形式并不能对字符串变量重新赋值,因为''属于空字节,只能用于空字符串
替换一个非空字节则是可行的


具体请参考  深入理解php内核

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿