我想要得到一个字符串的第一个字母,我注意到$str[0]工作得很好。我只是不确定这是否是“良好的实践”,因为这种符号通常用于数组。这个特性似乎没有很好的文档记录,所以我想请你们来告诉我,从各个方面来说,使用这个符号是否正确?
或者我应该坚持使用好的ol' substr($str, 0,1)?
此外,我注意到花括号($str{0})也可以。这是怎么回事?
我想要得到一个字符串的第一个字母,我注意到$str[0]工作得很好。我只是不确定这是否是“良好的实践”,因为这种符号通常用于数组。这个特性似乎没有很好的文档记录,所以我想请你们来告诉我,从各个方面来说,使用这个符号是否正确?
或者我应该坚持使用好的ol' substr($str, 0,1)?
此外,我注意到花括号($str{0})也可以。这是怎么回事?
当前回答
在多字节(unicode)字符串的情况下,使用str[0]可能会导致麻烦。Mb_substr()是一个更好的解决方案。例如:
$first_char = mb_substr($title, 0, 1);
获取UTF-8字符串的第一个字符
其他回答
$str = 'abcdef';
echo $str[0]; // a
{}语法从PHP 5.3.0起已弃用。建议使用方括号。
作为一个凡人,我会坚持使用$str[0]。就我而言,比起substr($str, 0,1),一眼就能更快地掌握$str[0]的含义。这可能归结为偏好问题。
就性能而言,概要文件概要文件概要文件。:)或者你可以查看一下PHP源代码…
假设你只是想要$_POST的一部分的第一个字符,让我们称之为“类型”。并且$_POST['type']目前是'Control'。如果在这种情况下,如果你使用$_POST['type'][0],或substr($_POST['type'], 0,1),你将得到C。
然而,如果客户端要修改他们发送给你的数据,例如从类型到类型[],然后发送'Control'和'Test'作为该数组的数据,$_POST['type'][0]现在将返回Control而不是C,而substr($_POST['type'], 0,1)将简单地失败。
是的,使用$str[0]可能会有问题,但这取决于周围的环境。
在多字节(unicode)字符串的情况下,使用str[0]可能会导致麻烦。Mb_substr()是一个更好的解决方案。例如:
$first_char = mb_substr($title, 0, 1);
获取UTF-8字符串的第一个字符