我有这段代码,它在输出中给出“aababc”我不知道为什么会这样。
<?php
$str = ‘abcdefghijklmnop’;
$fp = fopen(“output.txt”, ‘w’);
for($i=0; $i< 4; $i++) {
fwrite($fp, $str, $i);
}
?>
任何对此有任何想法的大师。
谢谢
我有这段代码,它在输出中给出“aababc”我不知道为什么会这样。
<?php
$str = ‘abcdefghijklmnop’;
$fp = fopen(“output.txt”, ‘w’);
for($i=0; $i< 4; $i++) {
fwrite($fp, $str, $i);
}
?>
任何对此有任何想法的大师。
谢谢
这里你的for -loop 是如何工作的:
// 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'
我不能停止)或没有循环:
// will take 3 first symbols from string and write to file
fwrite($fp, substr($str, 0, 3));
// will write 3 symbols from string to file
fwrite($fp, $str, 3);
它的行为正确。
我 = 0 字符串 = ''
i = 1 str = 'a'
i = 2 str = 'ab'
i = 3 str = 'abc'
所以每次 $str 中的内容直到长度 $i 时它都会写入它的末尾。
您需要从此更改 fwrite
fwrite($fp, $str, $i);
对此:
fwrite($fp, substr($str, $i, 1));
得到预期的结果'abc'