Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP'的奇怪bug;字符串作为数组访问';feature和phseclib_Php_String - Fatal编程技术网

PHP'的奇怪bug;字符串作为数组访问';feature和phseclib

PHP'的奇怪bug;字符串作为数组访问';feature和phseclib,php,string,Php,String,我在服务器上使用PHP5.3,发现了一个奇怪的错误- 我需要删除字符串中的第一个符号,我已经使用了 <?php $str[0] = ''; //empty string ?> 是的,我知道substr()之类的东西,但在文档中我看到了 字符串中的字符可以通过指定 使用字符串后所需字符的从零开始的偏移量 方括号,如$str[42]中所示。将字符串视为数组 用于此目的的字符集 一切正常,除了在调试器中我看到字符串的第一个元素并没有被删除,但被空格替换了,这不是问题 但在下一步

我在服务器上使用PHP5.3,发现了一个奇怪的错误- 我需要删除字符串中的第一个符号,我已经使用了

<?php
   $str[0] = ''; //empty string
?>

是的,我知道substr()之类的东西,但在文档中我看到了

字符串中的字符可以通过指定 使用字符串后所需字符的从零开始的偏移量 方括号,如$str[42]中所示。将字符串视为数组 用于此目的的字符集

一切正常,除了在调试器中我看到字符串的第一个元素并没有被删除,但被空格替换了,这不是问题

但在下一步中,我将在phpseclib库中的$SSH->exec()中使用这个字符串

出现了一些问题—脚本运行非常慢,exec()不返回任何内容(也没有错误)

当我使用substr($str,1)时,一切正常-快速、正确的工作


我找不到答案-那是什么?PHP是否通过将第一个符号替换为零来中断字符串?

当您编写
$str[0]=''
您“认为”您正在删除第一个字符,但实际上您仍然将第一个字符设置为空白(“”)字符。如图所示


.

''(空字符串)不是字符。这根本不应该起作用,ever.PHP没有显示任何错误。我知道我的代码不正确,我只是尝试在本例中使用该功能。
unset($str[0])也不起作用。@d请尝试只为它指定一个简单的
”。你做了一个任务,你不删除它。仅仅因为你看不到它并不意味着它不再存在,正如你所知。你可以只修剪字符串或者只是子字符串。我只是说,你不应该尝试将错误类型的元素放入“字符数组”中,因为它不会按你期望的方式工作,在这种情况下,它真的应该崩溃。无法将方形销钉装入圆孔中。只需使用
$str=substr($str,1)如果你想删掉前面的一个字符。谢谢你的提醒,我在手机上,不知怎么错过了。