私のコードで自分の変数が2つあります。 forループ内にあるif文があります。 if文がforループで実行されるとき、私の2つの変数はそれに応じて変わる必要がありますが、そうではありません。私はコード内に関数がないので、すべての変数はグローバルスコープにあります。ここでPHP - 変数は値を変更しないでください。
は私のコードです:
$file = file("../../manpages/structure.txt");
$topicindex = 0;
$topiclineindex = 0;
for($x = 0; count($file) > $x; $x++){
$data = explode(",",$file[$x]);
$structure[$topicindex][$topiclineindex] = $file[$x];
echo '[' . $topicindex . ',' . $topiclineindex . ']';
$topiclineindex += 1;
if ($data[0] == "ENDTOPIC") {
echo "NEXT TOPIC";
$topicindex += 1;
$topiclineindex = 0;
}
}
print_r($structure);
これはブラウザに出力されます。
[0,0][0,1][0,2][0,3][0,4][0,5][0,6][0,7]NEXT TOPICArray ([0] => Array ([0] => TOPIC,Topic 1 [1] => SUBTOPIC,Sub Topic 1,intro.txt [2] => SUBTOPIC,Sub Topic 2,intro.txt [3] => ENDTOPIC [4] => TOPIC,Topic 2 [5] => SUBTOPIC,Sub Topic 21,intro.txt [6] => SUBTOPIC,Sub Topic 22,intro.txt [7] => ENDTOPIC))
そして、これはstructure.txt
TOPIC,Topic 1
SUBTOPIC,Sub Topic 1,intro.txt
SUBTOPIC,Sub Topic 2,intro.txt
ENDTOPIC
TOPIC,Topic 2
SUBTOPIC,Sub Topic 21,intro.txt
SUBTOPIC,Sub Topic 22,intro.txt
ENDTOPIC
任意の内容ですすべての提案は非常に高く評価されています。
編集:もう少しテストしましたが、新しく割り当てられた値がif文をエスケープしないようです。 forループの次の反復で、$topicindex
と$topiclineindex
は、if文が実行される前の以前の反復の以前の値に戻りました。
は、あなたが正しいですので あなたのIF文は、最後の行だけのために実行されます。私は改行文字を忘れていました。どうもありがとうございます。 –