$line[0]='a,1,2,3,4,5';
$line[1]='b,1,2,3,4,5';
$line[2]='c,1,2,3,4,5';
$line[3]='d,1,2,3,4,5';
$line[4]='e,1,2,3,4,5';
$line[5]='f,1,2,3,4,5';
for($i=0;$i<=$#line;$i++){
($a,$b,$c,$d,$e,$f)=split(/\,/,$line[$i]);
push(@str,$a);
}
for($i=0;$i<=$#str;$i++){
print '$str',"[$i] = ","$str[$i]\n";
}
print "\n\n";
@str="";
for($i=0;$i<=$#line;$i++){
($a,$b,$c,$d,$e,$f)=split(/\,/,$line[$i]);
push(@str,$a);
}
for($i=0;$i<=$#str;$i++){
print '$str',"[$i] = ","$str[$i]\n";
}
__END__
実行結果
$str[0] = a
$str[1] = b
$str[2] = c
$str[3] = d
$str[4] = e
$str[5] = f
$str[0] =
$str[1] = a
$str[2] = b
$str[3] = c
$str[4] = d
$str[5] = e
$str[6] = f
二回目は$str[0]から入らないのですね。
@str="";
にその様にさせる意味があったのでしょうか?
pushなので、変数(@str)をクリアして使おうとしたら、こんな事になっていました。
No.2ベストアンサー
- 回答日時:
配列を初期化するには
@str = (); # 空リストの代入
とするか、あるいは
undef @str; # 配列領域のクリア
とします。
また、あまりやりませんが
$#str = -1; # 要素の切り詰め
なんて方法もあります。
普通は1番目の方法を使うことが多いです。
@str = "";
というのは、「空文字列」1つからなるリストを代入する、という意味(つまり、@str = (""); と同じ)なので、@str の0番目に "" が入っていることになります。
このため、2回目の処理では0番目を飛ばして push されたように見えたのです。
No.1
- 回答日時:
@がつくものをリスト変数っていいます。
このリスト変数,初期化のやりかたをみたら分かりやすいと思います。
例)
@menu=("定食", "うどん", "カレー", "ラーメン");
とすると,
menu[0]="定食";
menu[1]="うどん";
menu[2]="カレー";
menu[3]="ラーメン";
となります。
質問文の場合,
@str="";
ですから;
str[0]="";
が入るわけです。
そして,
for($i=0;$i<=$#line;$i++){
($a,$b,$c,$d,$e,$f)=split(/\,/,$line[$i]);
push(@str,$a);
}
によって配列strの後ろからa,b,c,d,e,fを順に代入したからそのような結果になったと思われます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- C言語・C++・C# C# 浮動小数の数値文字列化 1 2022/04/18 15:15
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- Ruby パイソンエラーについて 1 2022/12/24 14:07
- C言語・C++・C# C言語の質問です HTMLでこのようなコードを書いたのですがそれをC言語で同じように書きたいです < 1 2022/08/11 23:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
相手側の携帯が電源切れてる時...
-
1コールだけ鳴るけど切れる電話...
-
face book で女性の方からline ...
-
よく05(04)lineって見かけるん...
-
名前を教えてしまったら何に悪...
-
LINE追加で「該当するユーザー...
-
ラインナップとラインアップは...
-
遠くにいる友達とLINE交換する...
-
あの噂の世界三大チェーンメー...
-
LINEについてです。いつも通り...
-
Windowsのバッチファイルで正規...
-
line でおはようございます、の...
-
ネットで個人の電話番号を調べ...
-
私がlineのアイコンを変更する...
-
教えてください
-
会社の先輩とLINE プライベート...
-
「一番上、真ん中、下」を示す英語
-
先輩のライン(男性)を追加した...
-
python flask から fastapiへの...
-
lineのブロック事情について質...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
相手側の携帯が電源切れてる時...
-
1コールだけ鳴るけど切れる電話...
-
LINE追加で「該当するユーザー...
-
よく05(04)lineって見かけるん...
-
face book で女性の方からline ...
-
いきなりラインのトークに「新...
-
Windowsのバッチファイルで正規...
-
ある男子から、ライン追加され...
-
ラインナップとラインアップは...
-
生産ラインの品質を表す直行率...
-
遠くにいる友達とLINE交換する...
-
先輩のライン(男性)を追加した...
-
「一番上、真ん中、下」を示す英語
-
LINEで好きな人が「笑」を全然つ...
-
法線(normal line)はなぜそう...
-
新しいクラスメイト全員のLINE...
-
着信拒否、ラインブロックと解...
-
swift言語のprintln()関数で「p...
-
既婚女性にラインを聞くことに...
-
質問です。 先日クラスの女子に...
おすすめ情報