1

我有这段代码,它在输出中给出“aababc”我不知道为什么会这样。

<?php
    $str = ‘abcdefghijklmnop’;
    $fp = fopen(“output.txt”, ‘w’);
    for($i=0; $i< 4; $i++) {
    fwrite($fp, $str, $i);
    }
    ?>

任何对此有任何想法的大师。

谢谢

4

3 回答 3

4

这里你的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);
于 2013-06-16T12:34:05.067 回答
1

它的行为正确。

我 = 0 字符串 = ''

i = 1 str = 'a'

i = 2 str = 'ab'

i = 3 str = 'abc'

所以每次 $str 中的内容直到长度 $i 时它都会写入它的末尾。

于 2013-06-16T12:34:56.877 回答
0

您需要从此更改 fwrite

fwrite($fp, $str, $i);

对此:

fwrite($fp, substr($str, $i, 1));

得到预期的结果'abc'

于 2013-06-16T12:37:35.270 回答