Czy w PHP są słowniki?

87

Na przykład:

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

a następnie móc się do niego odwołać w ten sposób:

 $names[bob]
bzupnick
źródło
1
Zdefiniuj „słownik”. Czy odnosisz się do prostej tablicy asocjacyjnej?
jerluc
Jeśli umieszczasz / pobierasz dane z bazy danych, czy nie szukałbyś zamiast tego słownika dla bazy danych?
Niklas
tak, właśnie o to mi chodzi. i idk, nie myślałem o tht .... lol
bzupnick
@cularis ma wtedy twoją odpowiedź
jerluc
1
@bzupnick, a następnie powinieneś je zestawić .
cypher

Odpowiedzi:

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",
];
?>

W ten sposób można używać standardowych tablic.

Jakub
źródło
problem z tablicami polega na tym, że kiedy je
sortuję
2
Zobacz tę stronę: php.net/manual/en/array.sorting.php . W PHP jest ponad 20 metod sortowania ;-). Prawdopodobnie będziesz potrzebować ksort.
Grad van Horck
2
@Felix: Tak. Miałem na myśli, że jeden ;-) asort w tym przypadku jest lepszy. :-)
Grad van Horck
or arsort yeh? bo potrzebuję najwyższego, żeby być na szczycie
bzupnick
2
Współpracownik zaczął pracować w php w tle C. Zapytał mnie, jak zrobić słownik w php, a ja powiedziałem, że wtf to słownik o_o Teraz wiem
Captain Hypertext
14

Nie, w php nie ma słowników. Najbliższą rzeczą, jaką masz, jest tablica. Jednak tablica różni się od słownika, ponieważ tablice mają zarówno indeks, jak i klucz. Słowniki mają tylko klucze i nie mają indeksu. Co mam przez to na myśli?

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

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

Poniższy wiersz jest dozwolony z powyższą tablicą, ale spowodowałby błąd, gdyby był słownikiem.

print $array[0]

Python zawiera zarówno tablice, jak i słowniki.

Brént Russęll
źródło
0

Normalna arraymoże służyć jako struktura danych słownika. Ogólnie ma uniwersalne zastosowanie: tablica, lista (wektor), tabela skrótów, słownik, kolekcja, stos, kolejka itp.

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

$names['bob'];

A ze względu na szeroki projekt nie uzyskuje pełnych korzyści wynikających z określonej struktury danych. Możesz zaimplementować swój własny słownik, rozszerzając klasę ArrayObjectlub możesz użyć SplObjectStorageklasy, która jest implementacją map (słownika), umożliwiającą przypisywanie obiektów jako kluczy.

Jsowa
źródło
0

Tablica asocjacyjna w PHP faktycznie uważana za słownik.

Tablica w PHP jest właściwie uporządkowaną mapą. Mapa to typ, który wiąże wartości z kluczami. może być traktowany jako tablica, lista (wektor), tablica mieszająca (implementacja mapy), słownik , kolekcja, stos, kolejka i prawdopodobnie więcej.

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

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

Tablica różni się od słownika, ponieważ tablice mają zarówno indeks, jak i klucz. Słowniki mają tylko klucze i nie mają indeksu.

Khageshwor
źródło