$str = "8560841836";
$mystr = array($str);
$string = strlen($str);
for($i=0; $i<=$string; $i++){ echo $string[$i]."\n"; }
这段代码将字符串打印在一行上,但我希望它能够每次只打印一个字符,然后换到下一行打印下一个字符...
根据 PHP 文档 :
通过使用方括号指定所需字符的从零开始的偏移量来访问和修改字符串中的字符,例如
$str[42]
。可以将字符串视为此目的的字符数组。当您想要提取或替换多个字符时,可以使用函数 substr() 和 substr_replace()。注意:也可以使用花括号(大括号)访问字符串,例如
$str{42}
,目的相同。警告:在内部,PHP 字符串是字节数组。因此,使用数组括号访问或修改字符串不是多字节安全的,并且只应使用单字节编码(如 ISO-8859-1)的字符串进行操作。
Examples:
// Get the first character of a string
$str = 'This is a test.';
$first = $str[0]; // 't'
// Get the third character of a string
$third = $str[2]; // 'i'
// Get the last character of a string.
$str = 'This is still a test.';
$last = $str[strlen($str)-1]; // '.'
// Modify the last character of a string
$str = 'Look at the sea';
$str[strlen($str)-1] = 'e'; // 'Look at the see'
So in your case, it is very easy:
$str = '8560841836';
$len = strlen($str);
for($i = 0; $i < $len; ++$i) // < and not <=, cause the index starts at 0!
echo $str[$i]."\n";
'T'
的原因是什么? - Teepeemm有一个函数str_split('字符串')
。它返回:
array(6) {
[0]=>
string(1) "s"
[1]=>
string(1) "t"
[2]=>
string(1) "r"
[3]=>
string(1) "i"
[4]=>
string(1) "n"
[5]=>
string(1) "g"
}
您可以传递第二个参数来设置每块的最大长度。
例如:str_split('string', 2)
将返回:
array(3) {
[0]=>
string(2) "st"
[1]=>
string(2) "ri"
[2]=>
string(2) "ng"
}
您将字符串与字符串长度混淆了。
此外,您可以使用$string{$i}
代替$string[$i]
。
最后,请注意循环的结束条件(使用$i<$lenght
而不是$i<=$lenght
)。
以下代码可行:
<?php
$str = "8560841836";
$lenght = strlen($str);
for($i=0; $i<$lenght; $i++){
echo $str[$i]."\n";
}
?>
$str[$i]
是可行的,但我认为推荐使用 $str{$i}
。我会研究一下。 - Gwenc37尝试使用这段代码
$str = "8560841836";
$mystr = array($str);
$string = strlen($str);
for($i=0; $i<=$string; $i++){ echo $str[$i]."<br>"; }
<?php
$str = "Split Me !";
$start = 0;
for ($x = $start; $x < strlen($str); $x++) {
echo $str[$x];
}
?>
explode("", $data)
(请参考此引用)来分割字符串并遍历结果。$str = "8560841836";
$mystr = explode($str);
foreach( $mystr as $string){
echo $string."\n";
}