• ベストアンサー

配列からインデックス番号を得たい。

非常に初歩的な質問だと思います。。 配列で困っています。 $data = array("りんご","バナナ","メロン"); という配列があったとして、「メロン」という語句で$c_nに「2」というインデックス番号を得たい場合は具体的にどうしたら良いのでしょうか? $c_n = array_keys($data,"メロン"); echo $c_n; として実行すると、ただ「2」とだけ表示してほしいのに、「Array」とだけ表示されてしまいます。(初心者なので、大変な勘違いをしている場合があります。。) 具体的にどうしたらよいでしょうか?

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

  • ベストアンサー
  • yakou850
  • ベストアンサー率49% (25/51)
回答No.1

array_keysを検索してみると 結果部分がまず配列になっているようですね。 これは複数の要素が一致してしまうこともあるからです。 $zero=array(0,0,0)という配列でarray_keys($zero,0)をやると array(0,1,2)という結果ができているようです。 そこで今回の場合は echo $c_n[0]とやってみてはどうでしょう? おそらく2と出力できるはずです

参考URL:
http://php.s3.to/man/function.array-keys.html
tak-y
質問者

お礼

そのものズバリの回答です!! 上手く行きました!!ありがとうございました。 やはりまだまだ自分は勉強不足ですね。。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 配列の中身を入れ替える方法

    非常に初心者的な問題だとは思いますがよろしくお願いします Array ( [0] => みかん [1] => りんご [2] => バナナ [3] => キウイ [4] => メロン [5] => スイカ) 上記のような配列があったとしまして、 [2] => バナナ [3] => キウイ [4] => メロン を、 [2] => イチゴ [3] => もも [4] => さば に変更したいのですが、 どのようにすればよいでしょうか・・・ かれこれ2日ほどやっているのですがわかりません・・・ よろしくお願いします。

    • 締切済み
    • PHP
  • 多次元配列

    初歩的な質問ですみません。 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
  • C++ほぼ初心者です。配列で値の取得について

    C++ほぼ初心者です。 ちょっと自分で勉強しようとして配列を試しているところです。 そこで、どうしても配列にしたデータの値の取り方に悩んでしまったので教えていただきたいと思い質問させていただきました。 配列を   0     1  0 赤    リンゴ 1 黄    バナナ 2 緑    メロン としたときに、 「緑」という値を入れたら「メロン」と返ってくるようにしたいです。 いろいろ調べてみると、 「2」「1」と入れると「メロン」と返ってくるような説明を見ます。 これを「緑」という値で「メロン」って返ってくるようにするにはできないでしょうか? 私なりに考えた案としては まず、「緑」は2番だよと返ってくる関数でも作って、 それから「2」「1」の値をくださいってするのかな?と思うのですが、 どうもしっくりこないです。 この方法しかないでしょうか? よろしくお願いいたします。

  • ある文字を含む文字列のみ配列にする方法

    var_dump($text); を行うと array(1) { [0]=> string(XX) "あいさつ" } array(1) { [0]=> string(XX) "いい日旅立ち" } array(1) { [0]=> string(XX) "りんご、うまい" } array(1) { [0]=> string(XX) "メロン好き" } …… となるような変数 $text があり、そこから $key = array("ばなな","りんご","メロン"); の配列内にある文字列を含むものだけを新たに格納したいです。 自分では foreach($text as $value){ if(in_array($value, $key)){ $key_text[] = $value; } } と書いて試したのですが、NULLと返ってきてしまいます。 どうやって書けばいいか教えて下さい。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 二つの2次元配列をforeachで入れ子で回して、

    二つの2次元配列をforeachで入れ子で回して、ユーザーNOと商品名を比較して一致すれば数量を足して新しい2次元配列に入れ、 ユーザーNOだけ一致もしくはどちらも違う場合はそのままいれるphpのプログラムを作りたいです。 arrayの中はユーザーNO,商品名,数量です $cart[0]=array(1,バナナ,3) $cart[1]=array(2,イチゴ,2) $cart[2]=array(1,すいか,3) $cart2[0]=array(1,バナナ,2) $cart2[1]=array(2,メロン,5) $cart2[1]=array(1,すいか,3) $newcart[0]=(1,バナナ,5) $newcart[1]=(1,すいか,6) $newcart[2]=(2,イチゴ,2) $newcart[3]=(2,メロン,5) どのようにプログラムしたらよろしいでしょうか?

    • 締切済み
    • 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
  • PHPで配列から値を取得したい

    PHP勉強中の初心者です。 初歩的な質問なのですが以下のような配列から「りんご」、「バナナ」などの値をすべて取得するにはどうすればいいのでしょうか? Array ( [input] => 自転車 [status] => 0 [result] => Array ( [0] => Array ( [0] => りんご ) [1] => Array ( [0] => バナナ ) [2] => Array ( [0] => ミカン ) [3] => Array ( [0] => オレンジ ) [4] => Array ( [0] => ブドウ ) [5] => Array ( [0] => パイナップル ) ) )

    • ベストアンサー
    • PHP
  • PHPで配列の検索方法

    PHPで下のような2次元配列があったとします。(りんご=a、みかん=bのような意味です。CSVからデータを2次元配列に格納したものです。) $data[0][0]="りんご" , $data[0][1]="a" $data[1][0]="みかん" , $data[1][1]="b" $data[2][0]="ばなな" , $data[2][1]="c" $data[3][0]="ぶどう" , $data[3][1]="d" ここで下のような1次元配列$hogeがあったとき $hoge[0]="ばなな" , $hoge[1]="りんご" 新たに1次元配列$hogehogeを用意して、2次元配列の中から"りんご"や"ばなな"に対応する文字列を探し出して $hogehoge[0]="c" , $hogehoge[1]="a" と、格納したいのですが、やり方がわかりません。 イメージとしまして、 $hoge[0]→($data[0][0]~$data[3][0]の中から探す)→($data[2][0]であるとわかる)→($data[2][0]に対応するのは$data[2][1]だとわかる)→($hogehoge[0]=cと格納) もし分かる方がおられましたらお願いします。

    • ベストアンサー
    • 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
  • データの配列

    POSTで送られたデータから配列を作りたいのです。 下記はPOSTのデータをprint_r($_POST)で全て表示していますが、 この中から[NO0~11]までを array([0]=>11 [1]=>6 ~)というような形で配列として表示したので すが、方法が分かりません。 Array ( [N00] => 11 [NAME0] => a [N01] => 6 [NAME1] => b [N02] => 9 [NAME2] => c [N03] => 3 [NAME3] => d [N04] => 12 [NAME4] => e [N05] => 10 [NAME5] => f [N06] => 1 [NAME6] => g [N07] => 5 [NAME7] => h [N08] => 2 [NAME8] => i [N09] => 7 [NAME9] => j [N010] => 4 [NAME10] => k [N011] => 8 [NAME11] => l)

    • 締切済み
    • PHP