Có từ điển trong php không?


84

Ví dụ:

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

và sau đó có thể tham chiếu nó như thế này:

 $names[bob]

1
Xác định "từ điển". Bạn đang đề cập đến một mảng kết hợp đơn giản?
jerluc

Nếu bạn đang đặt / truy xuất dữ liệu từ cơ sở dữ liệu, bạn sẽ không phải tìm từ điển cho cơ sở dữ liệu sao?
Niklas

yeh, đó chính xác là những gì tôi đang đề cập đến. và idk, i havent nghĩ về THT .... lol
bzupnick

@cularis có câu trả lời của bạn sau đó
jerluc

1
@bzupnick thì bạn nên asort họ.
cypher

Câu trả lời:


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

Mảng tiêu chuẩn có thể được sử dụng theo cách đó.


vấn đề với mảng là khi tôi sort () chúng tôi cần phải giữ cho các chỉ số, đó là chìa khóa db, vì vậy tôi có thể tái truy vấn mà giá trị
bzupnick

2
Xem trang này: php.net/manual/en/array.sorting.php . Có hơn 20 phương pháp sắp xếp trong PHP ;-). Có thể bạn sẽ cần ksort.
Grad van Horck

2
@Felix: Vâng. Ý tôi là một ;-) asort tốt hơn trong trường hợp này. :-)
Grad van Horck

hay đốt cháy bạn? gây ra tôi cần nhất là trên đầu trang
bzupnick

2
Có một đồng nghiệp bắt đầu làm việc trong php từ nền C. Ông hỏi tôi làm thế nào để tạo ra một từ điển trong php, và tôi nói wtf là một cuốn từ điển o_o Bây giờ tôi biết
Captain Hypertext

14

Không, không có từ điển nào trong php. Thứ gần nhất bạn có là một mảng. Tuy nhiên, mảng khác với từ điển ở chỗ mảng có cả chỉ mục và khóa. Từ điển chỉ có khóa và không có chỉ mục. Ý tôi là gì?

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

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

Dòng sau được phép với mảng trên nhưng sẽ xuất hiện lỗi nếu nó là từ điển.

print $array[0]

Python có cả mảng và từ điển.


0

Bình thường arraycó thể dùng như một cấu trúc dữ liệu từ điển. Nói chung, nó có cách sử dụng đa năng: mảng, danh sách (vector), bảng băm, từ điển, bộ sưu tập, ngăn xếp, hàng đợi, v.v.

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

$names['bob'];

Và vì thiết kế rộng nên nó không thu được lợi ích đầy đủ của cấu trúc dữ liệu cụ thể. Bạn có thể triển khai từ điển của riêng mình bằng cách mở rộng ArrayObjecthoặc bạn có thể sử dụng SplObjectStoragelớp là triển khai bản đồ (từ điển) cho phép các đối tượng được gán làm khóa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.