2011-07-07 27 views
19

Nếu tôi đang làm việc với một mảng kết hợp như ví dụ:Mảng push với mảng sư

Array ([Username] => user 
     [Email] => email 
    ) 

và tôi muốn thêm một yếu tố để kết thúc, tôi sẽ suy nghĩ để làm:

array_push($array, array('Password' => 'pass')); 

Tuy nhiên, điều này khiến tôi với:

Array ([Username] => user 
     [Email] => email 
     Array ([Password] => pass) 
    ) 

thế nào điều này có thể tránh được vì vậy tôi kết thúc với:

Array ([Username] => user 
     [Email] => email 
     [Password] => pass 
    ) 

Được đánh giá cao!

Trả lời

33

Bạn đang sử dụng một mảng kết hợp, do đó bạn chỉ cần thiết lập các cặp khóa/giá trị như thế này.

$array["Password"] = pass; 

Tôi nghĩ bạn có thể cần xem xét sự khác biệt giữa mảng và mảng liên kết. Ví dụ nếu tôi chạy lệnh cùng một lần nữa với một giá trị khác nhau nó sẽ ghi đè lên cái cũ một:

$array["Password"] = "overwritten"; 

Đem lại cho bạn này

Array ([Username] => user 
     [Email] => email 
     [Password] => "overwritten" 
    ) 

Những đánh giá bởi câu hỏi của bạn không phải là điều mong đợi của bạn

4

Các mảng liên kết không được thiết kế để có khóa theo thứ tự. Bạn có thể thêm một yếu tố qua

$array['Password'] = 'pass'; 
15

Thử array_merge thay vì:

$array = array('Username' => 'user', 'Email' => 'email'); 
$array = array_merge($array, array('Password' => 'pass')); 

này tạo ra các mảng:

array('Username' => 'user', 'Email' => 'email', 'Password' => 'pass'); 
+0

Bạn cũng có thể làm điều này như một phím tắt '$ array + = array ('Password' => 'test');' nhưng được cảnh báo nó sẽ không ghi đè mật khẩu nếu đã được thiết lập. Ngoài ra, tôi sẽ không cá nhân làm điều đó. Có vẻ như một FYI bổ sung. –

4

Nói chung, với một mảng kết hợp bạn không có quyền kiểm soát thứ tự của các yếu tố.

Các yếu tố có thể theo bất kỳ thứ tự nào.

Tuy nhiên tôi đã tìm thấy php giữ thứ tự mà bạn thêm chúng.

Vì vậy, chỉ làm $myarra["name"] = "password"

Các vấn đề liên quan