質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

5457閲覧

php 2つの連想配列の比較

shinichi0326

総合スコア47

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2016/10/30 10:32

プログラム独学者です。2回目の質問になります。
今、連想配列$rbm
Array
(
[alice] => 6
[betty] => 5
[cathy] => 4
[dad] => 3
)
と同じく連想配列$rtm
Array
(
[alice] => 7
[cathy] => 7
[betty] => 4
[franca] => 3
)
があります。
2つの連想配列のキーの順番を比較したいのですが、
[例]([alice]: $rbmの[0]番目, $rtmの[0]番目;
[betty]: $rbmの[1]番目, $rtmの[2]番目;
[cathy]: $rbmの[2]番目, $rtmの[1]番目;
)[例]の様にそれぞれ $rbm, $rtm のキーが何番目かを取得し、比較する方法を知りたいのですが、ネットを調べてみてもよく解りません。
どなたか、ご教授下さい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

PHP の配列は内部に順番を持っていますが、それを直接参照する方法はありません。
なので、やるとしたら順番に辿っていくしかなさそうですね。

php

1function getInternalIndex($array, $search) 2{ 3 $found = null; 4 $i = 0; 5 foreach ($array as $key => $value) { 6 if ($key === $search) { 7 $found = $i; 8 break; 9 } 10 ++$i; 11 } 12 return $found; 13} 14 15echo getInternalIndex($rbm, 'cathy'); // 2

投稿2016/10/30 12:09

koyhoge

総合スコア268

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinichi0326

2016/10/30 23:54

回答ありがとうございます。koyhogeさんの回答も解りやすかったですが、kei344さんが 関数2つで回答してくださったので、そちらをベストアンサーにさせて頂きました。 また、解らなかったら教えて下さい。大変勉強になりました。
guest

0

ベストアンサー

PHP

1$rbm = Array( 2 'alice' => 6 3 , 'betty' => 5 4 , 'cathy' => 4 5 , 'dad' => 3 6); 7$rtm = Array( 8 'alice' => 7 9 , 'cathy' => 7 10 , 'betty' => 4 11 , 'franca' => 3 12); 13$needle = 'betty'; 14$res1 = array_search( $needle, array_keys( $rbm ) ); // false or key-index 15$res2 = array_search( $needle, array_keys( $rtm ) ); // false or key-index 16echo ( empty( $res1 ) ? 'false' : $res1 )."\n"; // 1 17echo ( empty( $res2 ) ? 'false' : $res2 )."\n"; // 2

【PHP: array_keys - Manual】
http://php.net/manual/ja/function.array-keys.php

【PHP: array_search - Manual】
http://php.net/manual/ja/function.array-search.php

投稿2016/10/30 11:54

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinichi0326

2016/10/30 23:49

こんな方法があったのですね! 関数2つで簡単に書けるとは思ってもみませんでした。 大変助かりました。 私も勉強して、kei344 さんの様に簡潔かつ明解に回答できる様になりたいです。 また、解らなかったら教えて下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問