PHPに辞書はありますか?


87

例えば:

$names = {[bob:27, billy:43, sam:76]};

そして、次のように参照できます。

 $names[bob]

1
「辞書」を定義します。単純な連想配列を参照していますか?
jerluc 2011年

データベースからデータを配置/取得する場合は、代わりにデータベースの辞書を探していませんか?
Niklas 2011年

ええ、それはまさに私が言及していることです。とidk、私はthtについて考えてい
ません

@cularisがあなたの答えを持っています
jerluc 2011年

1
@bzupnick次に、それらを分類する必要があります。
サイファー2011年

回答:


106

http://php.net/manual/en/language.types.array.php

<?php
$array = array(
    "foo" => "bar",
    "bar" => "foo",
);

// as of PHP 5.4
$array = [
    "foo" => "bar",
    "bar" => "foo",
];
?>

標準のアレイはそのように使用できます。


配列の問題は、配列をsort()するときに、dbキーであるインデックスを保持する必要があるため、その値を再クエリできることです
bzupnick 2011年

2
このページを参照してください:php.net/manual/en/array.sorting.php。PHPには20以上のソート方法があります;-)。おそらく必要になりksortます。
Grad van Horck 2011年

2
@フェリックス:うん。この場合、1つの;-) asortの方が優れていることを意味します。:-)
Grad van Horck 2011年

またはあなたがたを並べ替えますか?私が一番上にいる必要があるので
bzupnick 2011年

2
同僚がCのバックグラウンドからPHPで作業を開始しました。彼は私にphpで辞書を作る方法を尋ねました、そして私はwtfが辞書であると言いましたo_o今私は知っています
キャプテンハイパーテキスト

14

いいえ、phpには辞書はありません。あなたが持っている最も近いものは配列です。ただし、配列にはインデックスとキーの両方があるという点で、配列は辞書とは異なります。辞書にはキーのみがあり、インデックスはありません。それはどういう意味ですか?

$array = array(
    "foo" => "bar",
    "bar" => "foo"
);

// as of PHP 5.4
$array = [
    "foo" => "bar",
    "bar" => "foo",
];

次の行は上記の配列で許可されていますが、辞書の場合はエラーになります。

print $array[0]

Pythonには配列と辞書の両方があります。


0

Normalarrayは、辞書のデータ構造として機能します。一般に、配列、リスト(ベクトル)、ハッシュテーブル、辞書、コレクション、スタック、キューなど、多目的に使用できます。

$names = [
    'bob' => 27,
    'billy' => 43,
    'sam' => 76,
];

$names['bob'];

また、設計が広いため、特定のデータ構造のメリットを十分に享受することはできません。を拡張して独自のディクショナリを実装することも、オブジェクトをキーとして割り当てることができるマップ(ディクショナリ)実装であるクラスをArrayObject使用することもできSplObjectStorageます。


0

PHPの連想配列は、実際には辞書と見なされます。

PHPの配列は、実際には順序付けられたマップです。マップは、値をキーに関連付けるタイプです。配列、リスト(ベクトル)、ハッシュテーブル(マップの実装)、辞書、コレクション、スタック、キューなどとして扱うことができます。

<?php
$array = array(
    "foo" => "bar",
    "bar" => "foo",
);

// Using the short array syntax
$array = [
    "foo" => "bar",
    "bar" => "foo",
];
?>

配列は、配列にインデックスとキーの両方があるという点で辞書とは異なります。辞書にはキーのみがあり、インデックスはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.