- ベストアンサー
変数名を $_ にしたくない
&xxx("AA","BB"); sub xxx{print @_} ↑のソースで sub に @_ という名前の配列に 引数を渡すことができたけど、@z という名前の配列に 引数を渡したい場合はどういうソースになるんですか? {print @_} は {print @_;} のようにセミコロンを 書いてあるのが普通だと思うけど、このような場合は セミコロンを省略して問題があったりしますか? 下の foreach についても $_ というのを $z にするには どういうソースにしたらいいか教えてください。 $xx{"A"}= "aaa"; $xx{"B"}= "bbb"; $xx{"C"}= "ccc"; foreach(keys %xx){print "添え字は$_で値は$xx{$_}<br>"}
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- array_randで要素が数字の場合の処理方法
PHPのarray_randについて教えて下さい。 下記のようなソースを作りましたが思った通りの結果になりません。 //(A) $test=array(3,5,8,11,14,24,26,28); print_r($test); foreach ($test as $val) { echo $val.'<br>'; } //(B) $keys = array_rand($test, 5);//決められた数を抽出 print_r($keys).'<br><br>'; foreach ($keys as $val) { echo $val.'<br>'; } Aの部分の結果は Array ( [0] => 3 [1] => 5 [2] => 8 [3] => 11 [4] => 14 [5] => 24 [6] => 26 [7] => 28 ) foreachの部分の出力↓ 3 5 8 11 14 24 26 28 となりこれは特に問題ありません。 Bの部分でAの配列から5つランダムで取り出したいのですが、結果は Array ( [0] => 0 [1] => 3 [2] => 5 [3] => 6 [4] => 7 ) 0 foreachの部分の出力↓ 0 3 5 6 7 となってしまい、Aの配列の添え字の中から5つの数字が選ばれるようになってしまいます。 Aの添え字ではなく「3,5,8,11,14,24,26,28」の数字から5つランダムで取り出すにはどのような書き方をすればよいのでしょうか? ご回答よろしくお願い致します。
- ベストアンサー
- PHP
- 多次元配列?配列のキー?変数の型?
PHP勉強中のものです。 予定通りの動作にならんく四苦八苦しています。 どのように修正すれば予定通りになるのか考え方のアドバイスなどお願いします。 処理したいこと 変数$xxxの先頭の文字と最後の文字をsubstr()で取り出し$aaaと$bbbに別けそれぞれ代入しキーとして多次元配列に代入した配列要素を指定してechoで出力したい 試してみたこと $aaa1と$bbb1に直接整数を代入してみたところ、echoで出力された キーになる変数を整数型として変数に代入してみたが希望通りの動作にならなかった。 なにかアドバイス頂けると助かります。 $array = array( "0" =>array("あいうえお","かきくけこ"), "1" =>array("さしすせそ") ); $xxx = "0-1"; $aaa = substr($xxx,0,1); $bbb = substr($xxx,2); $aaa = (int)$aaa; $bbb = (int)$bbb; echo $array[$aaa][$bbb]; //出力されない $aaa1 = 0; $bbb1 = 1; echo $array[$aaa1][$bbb1]; //出力された $aaa = (int)$aaa; $bbb = (int)$bbb; echo $array[$aaa][$bbb]; //出力されない
- ベストアンサー
- PHP
- 正規表現のパターンマッチ
配列の中から特定の文字を取り出す処理がうまくできません @test = ("aaa","bbb","t=1","v=3"," test:", " test:") 上記のような配列があったとして 一文字目がaからzで二文字目が=のものを取り出す処理と 一文字以上の空白の後ろにtest:があるものを取り出す処理は どのようにすればいいのでしょうか? 下記のような感じで書いたのですがうまくいきません @test = ("aaa","bbb","t=1","v=3"," test:", " test:") my $test = "test:"; foreach( @test ) { if( $_ =~/^[a-z]+k/) { print $_; } if( $_ =~/^\s+$test/) { print $_; } } よろしくお願いします
- 締切済み
- Perl
- バッチファイル、変数について
windows2012R2で下記のようなバッチファイルを作成しました。 --------------- Set YYYY=%Date:~0,4% Set MM=%Date:~5,2% Set DD=%Date:~8,2% Set File=%YYYY%%MM%%DD% mkdir G:\bbb\xx1_%File% move G:\aaa\xxx* G:\bbb\xx1_%File% --------------- としてもフォルダは作成されておりましたが、xxxフォルダの中身が移動されておりませんでした。 どなたかお分かりの方がおりましたら、お願い致します。
- ベストアンサー
- その他([技術者向] コンピューター)
- You don't have permission
自宅サーバ Fedora 11です。 IEにhttp://XXX.XXX.X.XX/~master/aaa/bbb/ccc/ と打ち込んだら Forbidden You don't have permission to access /~master/aaa/bbb/ccc/ on this server. このようなエラーメッセージででました。 cccフォルダ中身が見えるようにしたいですが、どうしたらいいですか? cccフォルダのファイルは大丈夫です。例え http://XXX.XXX.X.XX/~master/aaa/bbb/ccc/dog1.gif しても問題ないです。ただ、 http://XXX.XXX.X.XX/~master/aaa/bbb/ccc/ だと、、、上記のようなエラーがでるし、中身を確認できません。 cccフォルダの中を確認できるようにするにはどうしたらいいですか? よろしくお願いします。 http://XXX.XXX.X.XX/~master/aaa/bbb/ccc/
- 締切済み
- Linux系OS
- ある条件で一致した場合、配列に代入したい
foreach(0..$#DataLines){ my@aaa= split(/<>/,$DataLines[$_]); if($FORM{No} eq @aaa[1]){ unshift(@bbb,"$DataLines[$_]"); } } print F "@bbb"; した時に配列@bbbにif($FORM{No} eq @aaa[1]){ で一致した場合、その時の配列を全部@bbbに代入したいのですが、最後のしか入らないようなので、これを全部入れるにはどうすれば良いかご教授願えませんでしょうか。 宜しくお願い致します。
- ベストアンサー
- Perl
- 受信できるアドレスと送信したときの自分のアドレスが違う
以前業者さんが来たときに、 aaa@xxx.xx.xx というメアドのみだったのを、家にあるパソコンそれぞれに bbb@xxx.xx.xx ccc@xxx.xx.xx と割り当ててもらいました。 しかしパソコンの1つを再セットアップして、データがまっさらな状態になった後メールを使うと、受信できるのははじめのメアドのaaa@xxx.xx.xxで、送信したときにはbbb@xxx.xx.xxが相手に表示されてしまいます。 環境はWindowsXPのOutlook Expressです。 送信するアドレスもaaa@xxx.xx.xxにするか、受信するアドレスを、またbbb@xxx.xx.xxにするかして、まともに使えるようにしたいのですが、Outlook Expressの設定変更で簡単にできますか? それともルータの設定をしないとだめなのでしょうか?
- ベストアンサー
- その他(メールサービス・ソフト)
- 配列変数を引数として(参照)値渡しをしたいのですが
プロシージャ間で配列変数を引数として(参照)値渡ししたいのですが、例えば以下のような場合、2箇所のXXX部分はどのように記述したらよいのでしょうか。 よろしくお願いします(Excel2000使用) Public Sub give() Dim a(2) As Byte a(0) = 3 a(1) = 15 take XXX End Sub Public Sub take(XXX) (処理省略。受け取り側でも配列変数で処理したい) End Sub ※上記の例では配列の要素数が2ですが、実際はもっと多いので、例えば「take a(0),a(1),・・・」というふうな記述は(仮に適切なものであったとしても)記述しきれません。
- ベストアンサー
- オフィス系ソフト
- foreachの実行結果について
お世話になります。 以下のソースの実行結果が自分のトレースしたのと何故違うのか頭を抱えています。 ご指導よろしくお願いします。 <?php $arr=array(array(100,200),array('aaa','bbb','ccc')); foreach($arr as $foo){ print "*****\n"; foreach($foo as $var){ print $var ."\n"; } } ?> <自分の答え> ***** 100 ***** 200 ***** aaa ***** bbb ***** ccc <正解> ***** 100 200 ***** aaa bbb ccc 正解の回答に納得が行かないのです… foreach文がネストしてて内側のforeachの処理が一回終了してから 外側のforeachにいくものだと自分は思っています。 違うのでしょうか?
- ベストアンサー
- PHP
- LP-S6160を使用している際に、印刷時に文字が余計な場所にも印刷される問題が発生しています。片面印刷の場合、裏面にも部分的に薄く文字が出てきます。数枚印刷すると改善され、キレイに印刷されます。おそらくインクがどこかに残ってしまい、二重に写されていると考えられますが、どこをクリーニングすればよいかわかりません。
- LP-S6160で印刷する際に、文字が余計な場所にも印刷される問題が発生しています。特に片面印刷の場合、裏面にも部分的に薄く文字が出てきます。複数枚印刷すると症状は改善し、キレイに印刷されます。おそらくどこかにインクが残ってしまい、それが原因で二重に印刷されていると考えられます。しかし、具体的なクリーニング方法がわかりません。
- LP-S6160を使っていると、印刷時に文字が余計な場所にも印刷される問題が発生しています。片面印刷の場合、裏面にも部分的に薄く文字が出てきます。数枚印刷すると問題は改善され、キレイに印刷されます。おそらくどこかにインクが残ってしまい、それが原因で二重に印刷されていると考えられますが、具体的なクリーニング方法がわかりません。
補足
ありがとうございます。 foreach で好きな名前の変数名が使えました。 1行の { } の中ならセミコロンは無くても やっぱり問題無いんですね。 sub については、 my (@z) = @_; でできました。 でも、sub には sub xxx(引数を入れる変数名) のような書式は用意されていないんですか? sub の中では $_ に引数を入れて使うのが 普通なんですか?