PHP通过简单的代码输出
我随身带着这段代码,它在输出中给出了“aababc”,我不知道为什么会这样PHP通过简单的代码输出,php,Php,我随身带着这段代码,它在输出中给出了“aababc”,我不知道为什么会这样 <?php $str = ‘abcdefghijklmnop’; $fp = fopen(“output.txt”, ‘w’); for($i=0; $i< 4; $i++) { fwrite($fp, $str, $i); } ?> 任何一位大师对此有任何想法 感谢您的for-循环如何工作: // i = 0; fwrite($fp, $str,
<?php
$str = ‘abcdefghijklmnop’;
$fp = fopen(“output.txt”, ‘w’);
for($i=0; $i< 4; $i++) {
fwrite($fp, $str, $i);
}
?>
任何一位大师对此有任何想法
感谢您的for-循环如何工作:
// i = 0;
fwrite($fp, $str, 0); // writes nothing
// i = 1;
fwrite($fp, $str, 1); // writes a
// i = 2;
fwrite($fp, $str, 2); // writes ab
// i = 3;
fwrite($fp, $str, 3); // writes abc
// total write 'aababc'
更新:要实现您的目标:
for ($i = 0; $i < 4; $i++) {
fwrite($fp, substr($str, $i, 1));
}
// will write 'abcd'
以下是您的for循环的工作原理:
// i = 0;
fwrite($fp, $str, 0); // writes nothing
// i = 1;
fwrite($fp, $str, 1); // writes a
// i = 2;
fwrite($fp, $str, 2); // writes ab
// i = 3;
fwrite($fp, $str, 3); // writes abc
// total write 'aababc'
更新:要实现您的目标:
for ($i = 0; $i < 4; $i++) {
fwrite($fp, substr($str, $i, 1));
}
// will write 'abcd'
它的行为是正确的
i=0
str=''
i=1
str='a'
i=2
str='ab'
i=3
str='abc'
因此,每次$str中的内容都会写入它的末尾,直到长度$i。它的行为正确
i=0
str=''
i=1
str='a'
i=2
str='ab'
i=3
str='abc'
因此,每次$str中的内容都会写入它的末尾,直到长度$i。您需要从此处更改写入
fwrite($fp, $str, $i);
为此:
fwrite($fp, substr($str, $i, 1));
要获得预期的结果“abc”您需要从下面更改fwrite
fwrite($fp, $str, $i);
为此:
fwrite($fp, substr($str, $i, 1));
要获得预期的结果“abc”您希望它写什么?fwrite的第三个参数是长度限制,因此基本上您的代码写入output.txt:第一个字母(i=0,a),然后是前两个字母(i=1,ab),最后,当i=3时,它写入:abc,结果是:aababc。如果你想写$str的前3个字母,你应该:fwrite($fp,$str[$i]);祝你好运。它应该写abc..你希望它写什么?fwrite的第三个参数是长度限制,所以基本上你的代码写到output.txt:第一个字母(i=0,a),然后前两个字母(i=1,ab),最后,当i=3时,它写:abc,结果是:aababc。如果你想写$str的前3个字母,你应该:fwrite($fp,$str[$i]);祝你好运。它应该写abc。使用
substr
获得你需要的正确符号使用substr
获得你需要的正确符号不(substr($str,$i,1)
更好)不(substr($str,$i,1)
更好)