
While文のループのなかにfor文でループをまわしているスクリプトなのですが、
forの中でカウンタ変数をつくり、ループ回数を計測しております。
またforの中である条件を満たした際に、lastでforを抜け、引き続きWhileのループを継続するという処理をしております。
$i=0;
While(○○){
処理1
for(××){
処理2
$i++;
if($i >=100){
処理3
last;
}
}
}
ここで、一度for文のif文で一度forループを抜け、Whileでループをし、またforループに突入した際に、前回forループでカウントした$iの値を保持したまま、そのつづきから$iのカウンタを動作させたいのですが、$iの値はforループを抜けるとリセットしてしまいます。
このような場合、どうすれば$iの値を保持できますでしょうか。
お詳しい方、宜しくお願い致します。
※ネストがうまく表現できず、みずらくてスミマセン。
No.1ベストアンサー
- 回答日時:
Perlのfor(式1 ; 式2; 式3 ) の 式1 ; 式2; 式3 いずれかを省略することができます。
また、
for(式1 ; 式2; 式3 ) { 処理 }
は
式1;
while(式2) {
処理
式3
}
と(ほぼ)同じです。
これらを考えて、変数が初期化されないようにすればいいのではないでしょうか。
> $iの値はforループを抜けるとリセットしてしまいます。
for文を抜けても、変数の値は保持されます。
リセットされるのは、リセットするようにプログラムに書いてあるからです。
for(××){
って省略してありますけど、ここで for($i=0;〜) ってやってませんか?
No.2
- 回答日時:
追記です。
forループは途中で抜けないとダメなんですか?
$i=0;
my $firstTime=1;
While(○○){
for(××){
if( $firstTime ) {
処理1 ;
$firstTime=0 ;
}
処理2
$i++;
if(条件を満す) {
処理3
$firstTime=0 ;
}
}
}
とか
$i=0;
While(○○){
処理1 ;
for(××){
処理2
$i++;
if(条件を満す) {
処理3
処理1 ;
}
}
}
とか、last を使わない方法があるのでは?
処理の内容次第では、もっとシンプルに書けるかもしれません。
ログの表示で、例えばログファイルのログを1000行読み込む毎に表示、最終的に1万行読み込む、といった処理をするためlastを使っています。
他の記述ができないか、考えてみます。
ありがとうございます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
処理終了後、他のページへジャ...
-
C#でDataFridViewの行をすべて...
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
メモリをアドレスを直接指定し...
-
テーブル内でドロップダウンメ...
-
コンボボックスのtag情報の取得...
-
セレクトボックスのselected属...
-
FindFirst を複数条件で検索
-
formで特定のinputを送信しない...
-
【C#】数値の範囲チェックについて
-
sendmailのFROMに日本語を使う
-
パソコン → パャRン
-
ACCESS テキストボックスを隙...
-
VB6のLSETをVB2005で実現するに...
-
関数「exists」と「defined」の...
-
[python] 文字列を変数名として...
-
セレクトメニューで2つの項目...
-
リストの項目を表示のみで、選...
-
vbaでxmlからNodeListでデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6で、長い時間かかる処理...
-
C言語のflagの使い方が分かりま...
-
SetDlgItemInt( ) c++
-
再帰的処理について
-
フォームの太字を置き換える
-
C言語のプログラミング
-
リファラのないカウントを防止
-
arduino の割り込み処理について
-
問題作成のWebアプリの作り方を...
-
実行中の変数の中身をイミディ...
-
Perlの基礎中の基礎を教え...
-
if (条件) { 処理 }
-
自動的にエスケープを付けて別...
-
数値計算の際、1000以下は端数...
-
ページングで「前の○件」の方法
-
{ ; }とは、どういう意味?
-
アクセス制限
-
処理終了後、他のページへジャ...
-
UWSC SLCTBOXもしくはSELECTに...
-
右詰表示
おすすめ情報
失礼いたしました。
if文の条件式の”$i >=100”は無視して、”ある条件を満たしたとき”に置き換えていただけますでしょうか。
whileループ→forループ→if文→whileループ→forループ→if文→・・・
を繰り返す処理になります。
その度に、$iの値を保持し、次回はその値の続きからカウントしたいです。