多次元配列のカウント方法

このQ&Aのポイント
  • 1次元配列の要素数を取得するにはcount($array1)とすることで取得することができます。
  • 2次元配列のカウントを取得する方法はarray_sumを使うことで実現することができます。
  • 例えば、配列$array2の要素の中身が['a', 'b'], ['c', 'd'], ['e', 'f']の場合、array_sum(array_map('count', $array2))とすることでカウントの値である3を取得することができます。
回答を見る
  • ベストアンサー

多次元配列のカウントのしかた

すみません、質問させてください。 $array1:1次元配列 $array2:2次元配列 1次元配列のカウント(要素数)をしるには count($array1) とすれば取得することができますが、 2次元配列のカウントを取得するにはどのように すればいいのでしょうか?そんな関数はありますか? $array2のデータの中身 $array[0][0] = 'a'; $array[0][1] = 'b'; $array[1][0] = 'c'; $array[1][1] = 'd'; $array[2][0] = 'e'; $array[2][1] = 'f'; この場合、3という値が欲しいのですが・・・ 宜しくお願い致します。

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

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

  • ベストアンサー
  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

count($array2) とすれば期待した数値が出ます。 参考URLの真ん中当たりにサンプルとして「Counting a multi-dimentional array」という項目があります。

参考URL:
http://www.php.net/manual/ja/function.count.php
TOKIO2003
質問者

お礼

できました。 どうもありがとうございました。

関連するQ&A

  • 要素にnullが入った多次元配列の次元数(2回目)

    同様の質問について再度投稿します。 以下、問題集で見掛けたプログラムの抜粋です。 String[][] Array = { {"Sunday", "Monday"}, null, {"Monday", "Tuesday"} }; int count =0; for (String[] A : array){ count += A.length; } System.out.println(count); このプログラムを実行すると、 要素nullのlengthが数えられないため、 NullPointerExceptionが発生する、ということです。 以前に質問した際には、 上記配列に含まれるnullは、大カッコで囲まれていないため、 次元としてカウントされないので、配列の次元数は 2次元となる、という回答を頂きました。 (配列変数も二次元で宣言されている。) 細かいようですが、大カッコで囲まれていないnullは 次元数としてカウントされなくても、要素として 拡張for文の対象にはなるのでしょうか…? 解説をお願いします。

  • 多次元配列のカウント+1の仕方

    多次元配列のカウント+1の仕方 下記のような多次元配列(ちなみに、これって二次元配列ですか?)があるとき、 常に、「2列目の0がある数+1」を返すようにしたいのですが、 どうすればよいのでしょうか? $data[0][1]とか$data[1][1]とか$data[2][1]とかの意味です。 下記の例でいくと、2列目に0が3つあるので、数値の4を返したいのですが…、 ■$data 1,0,A1,B1,C1 2,0,A2,B2,C2 3,0,A3,B3,C3 4,2,A4,B4,C4 ■var_dump($data); array(4) { [0]=> array(5) { [0]=> string(1) "1" [1]=> string(1) "0" [2]=> string(2) "A1" [3]=> string(2) "B1" [4]=> string(2) "C1" } [1]=> array(5) { [0]=> string(1) "2" [1]=> string(1) "0" [2]=> string(2) "A2" [3]=> string(2) "B2" [4]=> string(2) "C2" } [2]=> array(5) { [0]=> string(1) "3" [1]=> string(1) "0" [2]=> string(2) "A3" [3]=> string(2) "B3" [4]=> string(2) "C3" } [3]=> array(5) { [0]=> string(1) "4" [1]=> string(1) "2" [2]=> string(2) "A4" [3]=> string(2) "B4" [4]=> string(2) "C4" } }

    • ベストアンサー
    • 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
  • VBで配列の初期化について

    VBやVBAで1次元・2次元配列を、プログラムの中の 値の(リテラル的)記述で初期化する方法はどうすれば良いのでしょうか。1次元配列にはx=Array()で代用してきましたが、さて、行と列がある表のような、値データを2次元配列にセットしようとして、ハテナと行き詰まりました。配列名(要素)=値を要素数だけ繰り返す方法以外に、例えば A[][]={(a、b、c)(d、e、f)(g,h,i)}のような、書き方は出来ないのでしょうか。 複数のArrayをArreyの()内に入れてみましたがも上手く行かないようですが。 有り無しについて教えていただけたらと思います。 市販の解説書数書には触れた記述は見つかりませんでした。

  • 多次元配列

    初歩的な質問ですみません。 PHPプログラミングでの質問です。 仮に、多次元配列Aに、 Array( [0] => Array ( [0] => 6 ) [1] => Array ( [0] => 2 [1] => 1 ) [2] => Array ( [0] => 0 [1] => 5 [2] => 4 ) ) 多次元配列Bに、 Array( [0] => Array ( [0] => りんご ) [1] => Array ( [0] => ぶどう [1] => パイナップル ) [2] => Array ( [0] => みかん [1] => すいか [2] => メロン ) ) のように値が入っている場合、配列Aの値を参照して 値の大きいものから順に、それに対応する配列Bの値を取り出し、 あたらしい配列Cに代入する処理の書き方を教えて下さい。 上記の例ですと、配列Cが、 Array ( [0] => りんご [1] => すいか [2] => メロン [3] => ぶどう [4] => パイナップル [5] => みかん ) となるようにしたいです。 よろしくお願いします。 長文失礼しました。

    • ベストアンサー
    • PHP
  • PHP 多次元配列の次要素を返す便利関数

    PHP5を独学中の者です。 1次元や多次元配列を扱ってきて、次元数が決定されていない配列を自作関数に渡す事で、 現在のポイントの次要素を返す便利関数を考案中です。 【関数に求める利点】  ・引き渡した配列の次元数(1~n)に関わりなく、現在のポイントの次要素を返す。 【関数を使用した想定コード】   $e[0][0] = "a1";   $e[0][1] = "a2";   $e[0][2] = "a3"; // $e配列の次要素を取得 $r = 自作関数($e);  ※ 上記コードでは、現在のポイント($e[0][1])の次要素($e[0][2])を、$rに "a3" を返す   $e[0][0][0] = "a1";   $e[0][0][1] = "a2";   $e[0][0][2] = "a3"; // $e配列の次要素を取得 $r = 自作関数($e);  ※ 上記コードでは、現在のポイント($e[0][0][0])の次要素($e[0][0][1])を、$rに "a2" を返す 関数に対して引数を与えたり、色々と試行錯誤中ですが、アドバイス頂ければ嬉しいです。

    • 締切済み
    • PHP
  • 2次元配列を多次元配列にする。

    2次元配列を多次元配列にする。 PHP5で 2次元目はすべて同じキーの2次元配列を 2次元目のキーごとの内容を共通項にまとめて、 多次元配列にする方法を教えてください。 キーの数は膨大なので、関数の再帰呼び出し で、きれいに処理したいのです。 説明文では説明しきれないので、 やりたいことは↓の通りです。 array[0] = array([one] => "あ", [twe] => "う" [three] => "き"); array[1] = array([one] => "あ", [twe] => "う" [three] => "く"); array[2] = array([one] => "あ", [twe] => "え" [three] => "け"); array[3] = array([one] => "あ", [twe] => "え" [three] => "こ"); array[4] = array([one] => "い", [twe] => "お" [three] => "さ"); array[5] = array([one] => "い", [twe] => "お" [three] => "し"); array[6] = array([one] => "い", [twe] => "か" [three] => "す"); array[7] = array([one] => "い", [twe] => "か" [three] => "せ"); という配列があったら、これを↓のようにしたいです。 array( [あ] => array( [う] => array ("き", "く") [え] => array ("け", "こ") ) [い] => array( [お] => array ("さ", "し") [か] => array ("す", "せ") )   ) どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 多次元配列の扱い方

    PHPバージョン5.2.4を使っています。 次のような文字列が入っている多次元配列を foreachなどのループを使ってその値を取り出して扱いたいのですが、 取り出した値には配列(二次元以降の値)も含まれてるので 簡単には取り扱いできません・・・ print_rやvar_dumpを使えば値は全て表示されるのですが、 あくまで表示ではなくて値を取り扱いたいのです。 そのようなことができる関数などはあるのでしょうか? $arr[0][0] = 'a'; $arr[0][1] = 'b'; $arr[1] = 'c'; $arr[2][0][0][0] = 'd'; $arr[2][0][0][1] = 'e'; foreach ($arr as $value) { $value//←ここで値を扱いたいけど、配列も含まれてるので・・・ }

    • 締切済み
    • PHP
  • 多次元の配列を[ ]で括って見やすくトレースするには?

    多次元の配列を[ ]で括って見やすくトレースするには? 何次元か特定される配列ならばforなどで次元の数だけ繰り返せばできるとは思うのですが そうでないときにも [ [ [a,b,c,...],[],[],...],[],[],... ] のように隣り合う要素(配列)との切れ目が見やすいようにトレースする方法はありますか? プログラムには影響しませんが、トレースすると1次元の配列と同じように , だけで区切られてトレースされてしまい見にくいですので 配列が何次元か返させる関数など書ければ良いと思うのですが FlashPlayer10、ActionScript3.0です 質問の意味理解していただけるでしょうか お願いします

    • ベストアンサー
    • Flash
  • ActionScript 配列に関して

    myAry=new Array("a","b","c","d","e","f","g"); というように「myAry」配列の中にa~gまでの7個の要素があるとして、 例えば、myAry[2]; とすると "c"の要素(値)が取り出せますが、 逆に"c"の要素が「myAry」配列の何番目にいるかを調べるにはどうすれば良いのでしょうか? ASのバージョンは1.0もしくは2.0です。

専門家に質問してみよう