Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP通过简单的代码输出_Php - Fatal编程技术网

PHP通过简单的代码输出

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,

我随身带着这段代码,它在输出中给出了“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, 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)
更好)