¿Hay diccionarios en php?

84

Por ejemplo:

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

y luego poder hacer referencia a él de esta manera:

 $names[bob]
bzupnick
fuente
1
Defina "diccionario". ¿Te refieres a una matriz asociativa simple?
jerluc
Si está colocando / recuperando los datos de una base de datos, ¿no estaría buscando un diccionario para una base de datos?
Niklas
sí, eso es exactamente a lo que me refiero. y no, no
he
@cularis tiene tu respuesta entonces
jerluc
1
@bzupnick, entonces deberías clasificarlos .
cifrado

Respuestas:

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

Las matrices estándar se pueden usar de esa manera.

Jacob
fuente
el problema con las matrices es que cuando las ordeno (), necesito mantener el índice, que es la clave db, para poder volver a consultar ese valor
bzupnick
2
Vea esta página: php.net/manual/en/array.sorting.php . Hay más de 20 métodos de clasificación en PHP ;-). Probablemente lo necesite ksort.
Grad van Horck
2
@Felix: Sí. Quise decir que uno ;-) asort es mejor en este caso. :-)
Grad van Horck
o arsort yeh? porque necesito más alto para estar en la cima
bzupnick
2
Hice que un compañero de trabajo comenzara a trabajar en php desde un fondo de C. Me preguntó cómo hacer un diccionario en php, y le dije que wtf es un diccionario o_o Ahora lo sé
Capitán Hipertexto
14

No, no hay diccionarios en php. Lo más parecido que tienes es una matriz. Sin embargo, una matriz es diferente a un diccionario en que las matrices tienen un índice y una clave. Los diccionarios solo tienen claves y no tienen índice. ¿Qué quiero decir con eso?

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

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

La siguiente línea está permitida con la matriz anterior, pero daría un error si fuera un diccionario.

print $array[0]

Python tiene matrices y diccionarios.

Brént Russęll
fuente
0

Normal arraypuede servir como estructura de datos de diccionario. En general tiene uso multipropósito: matriz, lista (vector), tabla hash, diccionario, colección, pila, cola, etc.

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

$names['bob'];

Y debido a su amplio diseño, no obtiene todos los beneficios de una estructura de datos específica. Puede implementar su propio diccionario extendiendo una ArrayObjecto puede usar una SplObjectStorageclase que es una implementación de mapa (diccionario) que permite asignar objetos como claves.

Tajni
fuente