phpを使用してファイル内の各行の最大値を見つけようとしています。私の入力は次のようになります。
1x5x10
1x10x5
5x1x10
5x10x1
10x1x5
10x5x1
私のコード:
<?php
$myfile = fopen("day2_input.txt", "r") or die("Unable to open file!");
while(!feof($myfile)) {
$line = fgets($myfile);
$lineArr = explode("x", $line);
echo(max($lineArr)."\n");
}
fclose($myfile);
?>
これが奇妙なことです。入力にあるように、各行の最大値は10ですが、出力は次のとおりです。
5
5
5
10
5
10
最後に空の行を含めます。2つの質問。-max()
関数が10以外のものを与えるのはなぜですか?そして、なぜ出力の空の行?入力ファイルの行末にスペースはありません。また、を使用print_r()
して配列をチェックしまし$lineArr
た。
Array
(
[0] => 1
[1] => 5
[2] => 10
)
Array
(
[0] => 1
[1] => 10
[2] => 5
)
Array
(
[0] => 5
[1] => 1
[2] => 10
)
Array
(
[0] => 5
[1] => 10
[2] => 1
)
Array
(
[0] => 10
[1] => 1
[2] => 5
)
Array
(
[0] => 10
[1] => 5
[2] => 1
)
あなたの爆発は整数ではなく文字列の配列を作成しています....したがって、maxは文字列比較ロジックを適用し10
、5
アルファベット順よりも少なくなります。
文字列要素を整数に変換してから、max()呼び出しを実行します。次のようになります。
$lineArr = array_map('intval', explode("x", $line));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加