アシアル株式会社主催 開発者向け、一歩先をいくためのテクニカルセミナー

<< デストラクタでファイルに書き込むと... 質問一覧 ファイル操作のリソースIDの扱い方が... >>

  • 0P
連想配列の文字列インデックスを数字で扱うには?

  1. $fruit = array(
  2.   "Apple" => "りんご",  // 0
  3.   "Orange" => "みかん",  // 1
  4.   "Grape" => "ぶどう"  // 2
  5. );

このとき、$fruit の配列を文字列のインデックスではなく順番(数字)で扱いたい場合はどうすればよいのでしょうか?
よろしくお願い致します。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。

コメント一覧

並び替え( ツリー順 / 投稿順[降順] / 投稿順[昇順]

Re:連想配列の文字列インデックスを数字で扱うには?

ちょっとまわりくどいんですが、別な配列を定義してforeachぐるぐるとか。

  1. <?php
  2. $fruit = array(
  3.   "Apple" => "りんご",
  4.   "Orange" => "みかん",
  5.   "Grape" => "ぶどう"
  6. );
  7.  
  8. $tmp = array();
  9. foreach ($fruit as $v) {
  10.   $tmp[] = $v;
  11. }
  12.  
  13. $fruit = $tmp;
  14. print_r($fruit);

Re:Re:連想配列の文字列インデックスを数字で扱うには?

こういう方法もあるんですね!
この配列テーブルの仕様を変えれば良いんでしょうが、実際のテーブルにID番号を追加すると他でどう影響するか分からないので、出来るだけ現状の仕様で出来ればと思っていました。
この方法で進めたいと思います、ありがとうございました。

Re:連想配列の文字列インデックスを数字で扱うには?

array_values
http://jp2.php.net/array_values

勿論連想配列のkeyは無くなってしまいます。

Re:Re:連想配列の文字列インデックスを数字で扱うには?

array_values、スマートですね。

> vaiostarさん
ということでarray_valuesつかうといいです。

Re:Re:連想配列の文字列インデックスを数字で扱うには?

array_values という配列関数があったんですね、よく調べもしないですいませんでした。
ただ、今回はインデックスを数字にして、かつ key と val も・・・ということなので、他の方法でやってみます。ありがとうございました。

Re:連想配列の文字列インデックスを数字で扱うには?

がると申します。
んと…質問から微妙にそれる上に、手厳しい内容で恐縮ではあるのですが。

「連想配列を数値indexで扱う」という設計をまず見直してみる、ほうがよろしいと思うのですが如何でしょうか?
PHPは厳密には「List構造を持つ連想配列」なので、ってのはあるのですが。通常、連想配列には「順番( == 数値index)」はないですし。
逆に数値indexの場合、hash key(今回ですとAppleとかOrangeとか)はないですし。

もし、hash keyを特に使わないのであれば、連想配列とはまた別の持ち方もあると思うので。

ちと気になったので、質問の内容からは外れてるなぁと思いつつ書いてみました。
何かの参考なりヒントなりにでもなれば幸いです。

Re:Re:連想配列の文字列インデックスを数字で扱うには?

いえいえ、おっしゃることは正論だと思います。
ただ前任者からろくに引き継ぎを受けずに任されたシステムなので、今は出来るだけ現状維持で進めたいだけなのです。勝手にテーブルをいじってどこかおかしくなったら大変なので。
新規プロジェクトの場合はもっと効率よく、DB 構築の時点でいろいろと考慮したいと思います。
ご意見ありがとうございました。
デストラクタでファイルに書き込むと... 質問一覧 ファイル操作のリソースIDの扱い方が...