Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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(fopen)中从文件中读取单独的行_Php - Fatal编程技术网

如何在PHP(fopen)中从文件中读取单独的行

如何在PHP(fopen)中从文件中读取单独的行,php,Php,代码取自hackerrank.com 文件名内的内容php://stdin 5 4 1 2 3 4 5 代码: 我很困惑,为什么代码只读取第二行(,即1 2 3 4 5),而不读取第一行?如何读这两行字?还是第一个?代码工作正常 每次调用fscanf时,您都在读取文件的一行。这意味着,在执行fscanf($handle、%i%i、$n、$d)后,文件指针跳到第二行 检查变量$n和$d,两者应分别等于5和4 如果要读取和分析所有行,请避免使用fscanf,因为每行的模式不同: $handle

代码取自hackerrank.com

文件名内的内容<代码>php://stdin

5 4
1 2 3 4 5
代码:


我很困惑,为什么代码只读取第二行(
,即1 2 3 4 5
),而不读取第一行?如何读这两行字?还是第一个?

代码工作正常

每次调用
fscanf
时,您都在读取文件的一行。这意味着,在执行
fscanf($handle、%i%i、$n、$d)
后,文件指针跳到第二行

检查变量
$n
$d
,两者应分别等于
5
4


如果要读取和分析所有行,请避免使用
fscanf
,因为每行的模式不同:

$handle = fopen("php://stdin", "r");
while ($line = fgets($handle)) {
  $a = explode(" ", $line);
  var_dump($a);
}

代码运行得很好

每次调用
fscanf
时,您都在读取文件的一行。这意味着,在执行
fscanf($handle、%i%i、$n、$d)
后,文件指针跳到第二行

检查变量
$n
$d
,两者应分别等于
5
4


如果要读取和分析所有行,请避免使用
fscanf
,因为每行的模式不同:

$handle = fopen("php://stdin", "r");
while ($line = fgets($handle)) {
  $a = explode(" ", $line);
  var_dump($a);
}
另一种出去的方式

$handle = fopen ("php://stdin");

$numbers = str_replace("\n", ' ', $handle);
$numbers = explode(' ', $numbers);

foreach($numbers as $key => $value) 
    if($value == '')
        unset($numbers[$key]);

echo '<pre>';
print_r($numbers);
另一种出去的方式

$handle = fopen ("php://stdin");

$numbers = str_replace("\n", ' ', $handle);
$numbers = explode(' ', $numbers);

foreach($numbers as $key => $value) 
    if($value == '')
        unset($numbers[$key]);

echo '<pre>';
print_r($numbers);

你的意思是:$arr=[0=>12345',1=>54'];输出是:
12345
,echo=print\r($a\u temp)`not
$a
为什么这个代码总是读取文件的第二行???你的意思是:$arr=[0=>'12345',1=>'54';输出是:
12345
,echo=print\r($a\u temp)`不是
$a
为什么这个代码总是读取文件的第二行???
Array
(
    [1] => 5
    [2] => 4
    [3] => 1
    [4] => 2
    [5] => 3
    [6] => 4
    [7] => 5
)