• ベストアンサー

オブジェクトと配列の違いはなんでしょうか?

オブジェクトと連想配列、 その二つの型の決定的違いは、何が違うのでしょうか?

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

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

  • ベストアンサー
回答No.3

PHPだとどちらも簡単に使えるので同類に感じますよね。 違いは $arr = array("key0" => "あ", "key1" => "い", "key2" => "う"); for ($idx = 0; $idx < count($arr); $idx++) {   $value = $arr["key" . $idx]; } みたいなことが連想配列だと簡単に分かりやすくできるところじゃないですかね。 オブジェクトでも配列でもどちらでも値を保持できますが私はPHPならstdClassがお気に入りです。 便利ですし何よりお手軽なところがいいです。

yuzuru0024
質問者

お礼

回答ありがとうございます。 すいません、文中に言語名が抜けてましたね。 stdClass調べてみます。

その他の回答 (2)

  • cieux
  • ベストアンサー率22% (100/443)
回答No.2

new Arrayで宣言できますし、配列もオブジェクトの一種なのではないでしょうか。

yuzuru0024
質問者

お礼

回答ありがとうございます。 うーん、ということは、あまりたいして変わらないということでしょうかね・・・。

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

オブジェクトは new で作成した classのオブジェクトですよね 連想配列って配列のインデックスが数字でない配列のことでしょうか

yuzuru0024
質問者

補足

オブジェクトは、class hoge{}とかで定義してるやつだとおもいます。 配列は、KEY名が名前、数字どちらも含みます。

関連するQ&A

  • 連想配列/オブジェクト? どちらなのか教えて

    ・色々やっている内よく分からないデータになったので、連想配列/オブジェクト? どちらなのか教えてください ■前提オブジェクト var t1 = { key1: '佐藤' , key2: '鈴木' }; ■配列作成 var t2 = new Array(); ■配列にオブジェクトを格納? t2[t1['key1']]=t1['key2']; console.log(t2); //[佐藤: "鈴木"] ■アクセスしてみる console.log("t2['佐藤']"); //鈴木 console.log(t2[0]); //undefined ■質問 ・t2[0]は、なぜundefined? ・t2配列0番目に「佐藤: "鈴木"」というオブジェクトが入っていると思ったのですが… ・t2は、連想配列/オブジェクトの何れでしょうか? ・挙動から推測するとオブジェクトっぽいのですが、外側のかっこが[]でもオブジェクトなのでしょうか? ・外側のかっこが[]は配列で、外側のかっこが{}はオブジェクトと思っているのですが…

  • stdClass Objectを連想配列のように個別に取り出したい。

    $aに連想配列が入っているとして、 print "<pre>";print_r($a);print "</pre>";   ↓ array (  [Return] => array   (    [data] => あいうえお   ) ) このように連想配列の入った変数から データを個別に取るとき このように、配列名を並べると print $a['Return']['data']; ↓ あいうえお と、個別に取り出せますが、 あるデータをprint_rすると、 stdClass Object (  [Return] => stdClass Object   (    [data] => あいうえお   ) ) というふうに"stdClass Object"として出力されてしまいました。 stdClass Objectのデータを個別に取り出したいのですが 連想配列のような記述だとうまく取り出せません。 stdClass Objectのデータはどのようにして個別に取り出すのでしょうか?

    • ベストアンサー
    • PHP
  • フレームワークのクラス

    連想配列とオブジェクトの決定的な違いってなんですか? laravelというフレームワークを使っているのですが、フレームワークは基本クラスのオブジェクトに情報を格納してますよね? それは連想配列でも可能なわけで・・・ 連想配列よりオブジェクトの方が便利なのでしょうか?

    • ベストアンサー
    • PHP
  • 連想配列と添字配列の違いについて

    MySQL初心者です。 mysql_fetch_arrayとmysql_fetch_assocの違いがいまいち理解できません。 ネットで調べると mysql_fetch_array — 連想配列、添字配列、またはその両方として結果の行を取得する mysql_fetch_assoc — 連想配列として結果の行を取得する と書かれていますが、連想配列と添字配列の違いが理解できませんでした。 全くの初心者でもわかるようにそれぞれの違いを教えていただけませんか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • js オブジェクト

    javascriptにおいて配列や連想配列もオブジェクトの内に入るのでしょうか?

  • 配列は何故オブジェクト?

    僕はプログラミング初心者です。 javaの参考書で、配列について記述されていた章にて以下の記述がありました。 「データとそれを操作する機能をひとまとまりにしたものをオブジェクトといいますが、その意味では配列もオブジェクトです」と。 そこで、配列がオブジェクトである理由について、以下の仮説を立ててみました。正しいですか? 配列 ・データを保持する(配列要素を保存する) ・指定されたインデックス(牽引番号)のデータ(配列要素)を渡す 例えば、int [] n ={3,5,7};という配列があったとします。このソースコードにより、配列は箱に入れられヒープに保管されます。これにより、配列はデータを持っていることを意味する。これに int data=n[0];のように配列要素へのアクセスを行うと、配列は自身の持ってるデータ(配列要素) を変数dataに渡します。これは配列は、指定されたインデックス(牽引番号)のデータ(配列要素)を渡す機能を実行している。 つまり、上記から配列はデータとそれを操作する機能を持っており、オブジェクトといえる。

    • ベストアンサー
    • Java
  • VB2012でオブジェクト配列が使えますか?

    Visual Studio 2012 に含まれる Visual Basic で昔の Visual Basic 6のように、オブジェクト配列は使えないのでしょうか? 即ち Object 型で定義した配列に複数の Object を代入し、特定のプロパティーを全て同じ値にしてしまうようなことが出来れば、処理が簡単になるので便利です。色々試してみたのですが、私のレベルでは実現できないので、皆様の知識をお貸しください。

  • 配列とオブジェクトの違い

    初心者です。 こういうタイトルの質問で良いかもちょっと疑問です、すみません。 現在の時間を取得しようとして $now = new DateTime(); とすると、 DateTime Object ( [date] => 2011-03-06 15:36:11 [timezone_type] => 3 [timezone] => Asia/Tokyo ) が返されます。 これは配列かと思って $now['date'] とするとFatal error: Cannot use object of type DateTime as array in.....となってしまい、ここで配列ではなくオブジェクトだということに気付き、 $now->date など、色々と試行錯誤していますが、現在の時間を取得することができません。 どなたか教えていただけますでしょうか?

    • ベストアンサー
    • PHP
  • 連想配列、オブジェクト配列の使い分け

    お世話になります。 データベースで結果を取得する場合など、連想配列のままではなく何故、わざわざオブジェクトに格納する様な手法が使われるのでしょうか? 連想配列のままで処理するほうが早いと思いますし、それに付随するクラスファイルも多くなります。また、「結びつきを緩くして仕様変更に耐えうる様に」など聞きますが、余計複雑になってしまう様な気がしますので、メリットが今ひとつ分からず判断に迷ってしまいます。 どの様な使い分け、考え方をすれば良いかアドバイスいただけたら幸いです。 何卒、宜しくお願いします。 例) ※必要と思われる部分のみ記述しております。 ■連想配列 while($row=mysql_fetch_assoc($res)){ ~以下必要な処理} ■オブジェクト配列 while($row=mysql_fetch_assoc($res)){ $example = new Example(); $example->setName($row['name']); $example->setAddr($row['addr']); $array[] = $example } ~以下必要な処理 ○モデル class Example { private $_name = null; private $_addr = null; public function __construct() {} public function setName($name) { $this->_name = (string) $name; return $this; } public function getName() { return $this->_name; } public function setAddr($addr) { $this->_addr = (string) $addr; } ~以下省略 }

    • ベストアンサー
    • PHP
  • delete[]と、delete演算子の明確な違いとその使い分けについて

    C++の delete[]と、delete演算子の明確な違いとその使い分けについて 型* ptr = new 型[要素数]; でnewしたものについては、 delete[] ptr; にて、開放 型* ptr = new 型(); でnewしたものは、 delete ptr; するものだと、覚えてました、 特に深くは考えていなかったのですが。 std::auto_ptr<T> では、内部的には、delete[]ではなく deleteをしているという文章を見ました。 { std::autoptr<型A> iptr; iptr = new 型A; } のようなときは いいのですが・・・ { std::auto_ptr<char> cptr; cptr = new char[n+1]; } のようなときは、 動的配列なので、内部的に delete ptr; になってしまいます。 このように、テンプレートクラスを自作するときに 実際の特殊な型が決定されるまで、 deleteで、いくのかdelete[]でいくのか決定できないのはつらそうです。 そこで、deleteと、delete[]の正しい意味を 知りたいのですが。 Javaや、.NETには、配列オブジェクトというものが あります。 C++で、 new char[n+1]; は配列オブジェクトでしょうか? だとすると、delete[]は 右に来たものが配列オブジェクトなら、 Lengthを(こんなものがあるとして)調べて 1つづつ、まわして、deleteのほうを使ってひとつひとつ開放していく。 右に来たものが配列オブジェクトでなければ deleteと同じ振る舞いをする。 という動きが物理的に考えれそうで。 delete[]と書いておけば、状況に応じて、 動的配列なら全要素サーチして、開放そうでなければ deleteという風に、勝手に自動でそうしてくれるなら、 どんなときでも、delete[]にするようにコードを書いておけばよさそうです。。 実際のところどうなんでしょうか? deleteと、delete[]の明確な意味の違いと、 使用方法の違いについて教えてください。

専門家に質問してみよう