Чи є словники в php?


84

Наприклад:

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

а потім мати можливість посилатися на нього так:

 $names[bob]

1
Визначте «словник». Ви маєте на увазі простий асоціативний масив?
jerluc

Якщо ви розміщуєте / отримуєте дані з бази даних, чи не шукаєте ви замість цього словник для бази даних?
Ніклас,

так, саме на це я маю відношення. і idk, я не думав про tht .... ха-ха
bzupnick

Тоді у @cularis є ваша відповідь
jerluc

1
@bzupnick то ви повинні asort їх.
cypher

Відповіді:


102

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

Таким чином можна використовувати стандартні масиви.


проблема з масивами полягає в тому, що коли я сортую () їх, мені потрібно зберегти індекс, який є ключем db, щоб я міг зробити повторний запит щодо цього значення
bzupnick

2
Дивіться цю сторінку: php.net/manual/en/array.sorting.php . У PHP існує понад 20 методів сортування ;-). Вам, мабуть, знадобиться ksort.
Град ван Хорк,

2
@Felix: Так. Я мав на увазі, що в цьому випадку краще один ;-) асорт. :-)
Град ван Хорк,

чи arsort так? бо мені потрібно найвище, щоб бути на вершині
bzupnick

2
Якби колега почав працювати в php з C-фону. Він запитав мене, як зробити словник на 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

Звичайний arrayможе служити структурою даних словника. Загалом він має багатоцільове використання: масив, список (вектор), хеш-таблиця, словник, колекція, стек, черга тощо.

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

$names['bob'];

І завдяки широкому дизайну він не отримує повних переваг від конкретної структури даних. Ви можете реалізувати свій власний словник, розширивши ArrayObjectабо ви можете використовувати SplObjectStorageклас, який є реалізацією map (dictionary), що дозволяє об’єктам призначатись як ключі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.