連想配列の文字列インデックスを数字で扱うには? - PHPプロ!Q&A掲示板

1380

  • 0P

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

質問日時 / 2008年8月11日 01:29 (最終編集:8月11日 02:11)    回答数 / 7件

Questioner:  vaiostar  このエントリーをはてなブックマークに追加 

キーワード / php    array    連想配列   

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

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

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



ツリー一覧

┣A01mgngmgngちょっとまわりくどいんですが、別な配列を定義してfo
┃┗A01-1vaiostarこういう方法もあるんですね! この配列テーブルの仕
┣A02NurseAngelarray_values http://jp2.php.net/array_values
┃┣A02-1mgngmgngarray_values、スマートですね。 > vaiostarさん
┃┗A02-2vaiostararray_values という配列関数があったんですね、よく
┗A03galluがると申します。 んと…質問から微妙にそれる上に、
 ┗A03-1vaiostarいえいえ、おっしゃることは正論だと思います。 ただ

回答一覧

並び替え:

A01 満足
answerermgngmgng [8月11日 09:43]

ちょっとまわりくどいんですが、別な配列を定義して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);

この意見に回答する

ツリーへ TOPへ

A01-1
replyervaiostar [8月11日 22:13]

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

この意見に回答する

ツリーへ TOPへ

A02 参考になった
answererNurseAngel [8月11日 10:05]

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

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

この意見に回答する

ツリーへ TOPへ

A02-1
replyermgngmgng [8月11日 11:42]

array_values、スマートですね。

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

この意見に回答する

ツリーへ TOPへ

A02-2
replyervaiostar [8月11日 22:10]

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

この意見に回答する

ツリーへ TOPへ

A03 参考になった
answerergallu [8月11日 15:09]

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

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

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

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

この意見に回答する

ツリーへ TOPへ

A03-1
replyervaiostar [8月11日 22:16]

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

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
include されたファイルの変数
 このエントリーをはてなブックマークに追加 
A
出来ます。include(require)は、その部分に読み込むファイルの内容を展開したのと同義です。エディタでファイル読み込み(あるいはコピペ)した状態と同じだと考えていいです。 #defineや変数定義だけの共通フ...

>>続きを読む

shimix様、いつもわかりやすい説明をありがとうございます。 「includeはエディタでコピペした状態と同じ」 この表現、私も授業で使わせていただきたいと思います。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)