PHPの配列について

このQ&Aのポイント
  • PHPの配列についての質問です。
  • 関数を実行するごとに0からIDのような配列を組む方法について教えてください。
  • 使用目的はget_contentsしたものを正規表現で取り出し、配列にする処理に使うためです。
回答を見る
  • ベストアンサー

PHPの配列について

PHPの配列についての質問です。 以下のソースを // == ソース == function hoge( $foo ) { $arrs['a'] = 'A'. $foo; $arrs['b'] = 'B'. $foo; $arrs['c'] = 'C'. $foo; $arrs['d'] = 'D'. $foo; } hoge( '3' ); hoge( '9' ); // == /ソース == 実行すると print_rは // == print_r == Array (   [a] => A3   [b] => B3   [c] => C3   [d] => D3 ) Array (   [a] => A9   [b] => B9   [c] => C9   [d] => D9 ) // == /print_r == のようになります。 これを 関数を実行するごとに (0から IDのような 配列を組むようにする) 以下のようにするには どのようにすればよいでしょうか? // == print_r == Array (   [0] => Array     (       [a] => A3       [b] => B3       [c] => C3       [d] => D3     )   [1] => Array     (       [a] => A9       [b] => B9       [c] => C9       [d] => D9     ) ) // == /print_r == 使用目的は get_contentsしたものを正規表現で取り出し 配列にする処理に使おうと思っています。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

こういうこと? <?PHP $fuga=array(); function hoge( $foo ) { $arrs['a'] = 'A'. $foo; $arrs['b'] = 'B'. $foo; $arrs['c'] = 'C'. $foo; $arrs['d'] = 'D'. $foo; return $arrs; } $fuga[]=hoge('3'); $fuga[]=hoge('9'); print_r($fuga); ?> array_pushしてもよいかも。 関数だけで処理したいなら、引数で配列を渡す処理が必要

synchro-night
質問者

お礼

解答ありがとうございます。 目的の処理は一応はうまくいくようになりました。 >> 関数だけで処理したいなら、引数で配列を渡す処理が必要 ちょっと 残念ですが 納得です。

関連するQ&A

  • 配列を返す関数

    Perlではこのようにして複数の値を返して変数に一度に代入することができますが、 ($foo,$bar) = &hoge(); print "$foo,$bar\n"; sub hoge { return ('foo','bar'); } PHPでも同様のことはできますか? それとも以下のように分けて書くしかないですか? <?php $a = hoge(); $foo = $a[0]; $bar = $a[1]; print "$foo,$bar\n"; function hoge() { return array('foo','bar'); } ?>

    • ベストアンサー
    • PHP
  • 連想配列を配列に入れるには

    下記のような連想配列を配列に入れる簡単な方法はありますか。 array("a"=>"1","b"=>"2") 期待する結果(print_r) Array ( [0] => Array ( "a" => "1" ) [1] => Array ( "b" => "2" ) ) 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 多次元配列を、1次元の配列にする関数を書いてください。

    以下のように、多次元配列の配列をペチャンコにする関数(array_flatten)ってどうかきますか? <?php $arr[0] = 'a'; $arr[1][0] = 'b'; $arr[1][1][0] = 'c'; $arr[1][1][1][0] = 'd'; $arr[1][1][1][1][0] = 'e'; $arr[1][1][1][2] = 'f'; $arr[1][1][2] = 'g'; $arr[1][2] = 'h'; $arr[2] = 'i'; function array_flatten($arg){   処理; } $new_arr = array_flatten($arr); print_r($new_arr); ?> ↓ Array (   [0] => a   [1] => b   [2] => c   [3] => d   [4] => e   [5] => f   [6] => g   [7] => h   [8] => i ) ※関数のなかで、ペチャンコの配列を格納するための新しい配列を宣言すると、 同関数を再帰的に呼び出したら、その配列が初期化されますよね?

    • ベストアンサー
    • PHP
  • [PHP]配列におけるインデックスの考え方

    $scores = [10, 50, 30, 20]と言った配列があるとします。 配列内の10の値を取りだそうとすれば print $scores[0]; とすればブラウザに10の値が表示されます。 というか、配列というのは、[0][1][2][3]…と数えるものだと思っていました。 今、array_fill()関数について学習しています。 $prices = array_fill(0, 5, 10); としてprint_rで出力すると Array ( [0] => 10 [1] => 10 [2] => 10 [3] => 10 [4] => 10 ) と自分で理解できる範囲の結果が表示されます。 ところが、 $prices = array_fill(-2, 5, 10); をprint_rで出力すると以下のように返ってきます。 Array ( [-2] => 10 [0] => 10 [1] => 10 [2] => 10 [3] => 10 ) 単純に考えると、以下のように返ってこないのはなぜなのでしょうか? Array ( [-2] => 10 [-1] => 10 [0] => 10 [1] => 10 [2] => 10 ) また $prices = array_fill(5, 5, 10); と記述すると、 Array ( [5] => 10 [6] => 10 [7] => 10 [8] => 10 [9] => 10 ) と返ってきます。 配列のインデックス、添字を名前や商品名にして連想配列が出来るのはわかります。 (1)マイナス値からはじめた場合、なぜ[-2][-1][0]…のように返ってこないのはなぜでしょうか? (2)配列の添え字、インデックスが、[5]ではじまり[6][7][9][10]…とすることに 何か意味があるのでしょうか? $prices = [10, 10, 10, 10, 10]のような記述があった場合、初学者には[0]からはじまっているからこそ array_spliceなどでキー名がわからずとも、配列を操作を容易にできるのではないかと思ってしまいます。 上記2点、配列内でのマイナス値の扱い方、配列の添字が[0]以外からはじまる理由がよくわかりません。 分かる方いらっしゃいましたら教えて下さい。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 文字列になっている配列を‥

    以下の値がDBに文字列の項目に登録されています。 DB から値を取得したのはいいのですが文字列なので foreach でグルグルしようとすると怒られてしまいます。 配列の型に変換できればいいのですが(array)だとうまく行かないしどうすればいいかどなたかご教授願えないでしょうか。 よろしくお願いします。 ■値(文字列でDBに格納されてます‥) array( 1=>'a', 2=>'b', 3=>'c', 10=>array( 'A'=>1, 'B'=>'hoge1', ), 11=>array( 'A'=>2, 'B'=>'hoge2', ), 12=>array( 'A'=>3, 'B'=>'hoge3', ), )

    • 締切済み
    • PHP
  • PHP で Excel を2次元配列で取出したい

    PHP で Excel ファイルのデータを取り出して、単純な2次元配列にしたいのですが、なかなかうまく行かず、ここ2~3日、はまっています。サポートをお願い頂けたら幸いです。 <これまでやった事> ・ネット情報を参考に、phpspreadsheet が使える環境にし必要処理を実施後、以下のように rangeToArray 関数を使い、 print_r で中身を見ると、エクセルの A1 から N7 まで、連想配列として取り出されます。 $data = $sheet->rangeToArray("A1:N9"); print_r($data);  連想配列の型式で、   Array ( [0] => Array ( [0] => (A1 のデータ)[1] => (A2 のデータ)..... [12] => (A13のデータ)) [1] => Array ( [0] => (A2のデータ) [1] =>(B2のデータ).......   が表示されます。 しかし私には以下のような単純な2次元配の方が理解しやすいので、      $data[0][0] ならば A1 のデータ、$data[12][0] ならば A13 のデータ、     $data[2][6] ならば C7 のデータを意味し、 例えば、C1 に「コスト」   というタイトル名が表示されている場合、   $cost = $data[2][0]; で C1 の内容を $cost という変数に入れたいのですが、どうすれば良いのでしょうか? なお、現在は、$data 変数に添え字 [0][5] を入れると文法エラーでます。 ちなみに、私は連想配列の理解に追いついていけないほど、PHP の初心者です。 以上、コメントを頂けたら幸いです。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • phpにてforeachで配列の値が取り出せない

    以下のコードで「print $value」が空っぽなのですが なにが間違っているのかがわかりません。 ---------------------- $a=1 $b=2 $c=3 $d=4 $num = array($a,$b,$c,$d); foreach($num as $value){ print $value; } ---------------------- 初歩的な質問で恐れ入りますが 間違っている箇所があれば指摘いただきたいです。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPのforeachでMysqlにINSERT

    PHPのforeach文を使いMysqlにデータをINSERTしたいです。 配列$resultは以下のような連想配列になっています。 Array ( [0] => Array ( [A] => 1 [B] => 2 [C] => 3 [D] => 4 [E] => 5 ) [1] => Array ( [A] => 2 [B] => 4 [C] => 6 [D] => 8 [E] => 10 ) ) 上記の連想配列をforeach()文で以下の処理をします。 foreach ($result as $key => $value) { /** * データベースへの追加(新規追加時だけ実行。コメント忘れずに) */ $sql = $pdo->prepare('INSERT INTO sample(a, b, c, d, e) VALUES(:a, :b, :c, :d, :e)'); $sql->execute(array(':a' => $value[A], ':b' => $value[B], ':c' => $value[C], ':d' => $value[D], ':e' => $value[E])); } その後データベースでselect * from test;とすると1行目のデータしか格納されていません。原因が不明です。 print すると期待する配列要素が表示されますので配列のデータ配置不備ではありません。 アドバイス頂きたくお願い申し上げます。

    • ベストアンサー
    • PHP
  • 【PHP】配列を連想配列に

    $m = array('a', 'b', 'c'); この配列 $m をもとに $n = array(  'a' => array(   'b' => array(    'c' => array()))); 上のような連想配列 $n をつくりたいのですが、 $n = array(  $m[0] => array(   $m[1] => array(    $m[2] => array()))); 要素の数が固定のときは、これでもいいのですが、数が変動する場合に対応できません。 何か方法があれば教えてください。

    • ベストアンサー
    • PHP
  • phpで配列の重複する項目を多い順に並べたいです!

    $a = array("hoge","piyo","hoge","banana","hoge","piyo"); ↓ $b = array("hoge","piyo","banana"); みたいな配列があったとき、上のように重複する項目をまとめて、 さらに多い順に並び替えるにはどのようなコードを書けば良いですか?

    • ベストアンサー
    • PHP

専門家に質問してみよう