2016-02-17 15 views
7

Tôi đã mảng cấu trúc như sau:Làm thế nào để làm cho mảng giá trị đầu tiên là quan trọng đối với các giá trị thứ hai là giá trị trong mảng php

array(2) { 
    ["uid"]=> 
    string(2) "39" 
    ["name"]=> 
    string(18) "Manoj Kumar Sharma" 
} 
array(2) { 
    ["uid"]=> 
    string(2) "47" 
    ["name"]=> 
    string(11) "S kK Mishra" 
} 

Tôi muốn những mảng nên như thế này dưới đây:

array(4) { 
     [39]=> 
     string(18) "Manoj Kumar Sharma" 
     [47]=> 
     string(11) "S kK Mishra" 
    } 

Làm thế nào tôi có thể đạt được điều này? Làm ơn giúp tôi.

+1

chỉ cần sử dụng một 'foreach', sau đó gán nó trong mảng khác sử dụng 'uid' là chìa khóa và' name' như giá trị, bạn chỉ có thể cố gắng – Ghost

+0

Trên một là mảng đa chiều đơn hoặc hai đơn khác nhau mảng chiều? –

+1

@ A-2-A, không có sự khác biệt, imho ... – ankhzet

Trả lời

7

Cập nhật

Bạn có thể thử điều này với array_column() -

$new = array_column($arr, 'name', 'uid'); 

Demo

Lưu ý: array_column() không có sẵn cho PHP < 5,5

Nếu bạn là u hát các phiên bản thấp hơn của PHP sử dụng vòng lặp.

$new = array(); 
foreach($your_array as $array) { 
    $new[$array['uid']] = $array['name']; 
} 
+2

'mảng_column' chấp nhận tham số thứ ba, điều này sẽ làm cho việc này trở nên dễ dàng hơn. Đọc tài liệu mà bạn tự liên kết lại. – deceze

+0

@deceze Cảm ơn. Chưa bao giờ trải qua điều đó. :) –

+0

thats làm việc tốt như tôi yêu cầu. nhưng tôi có một vấn đề với truy vấn hiện tại của tôi mà tôi đang thực hiện. $ results = db_query ("SELECT DISTINCT u.uid là uid, u.name là tên FROM users u WHERE u.uid IN (SELECT p.endpoints_entity_id là uid FROM field_data_endpoints p Quan hệ JOIN r ON r.rid = p.entity_id WHERE p.bundle = 'subuser' AND p.deleted = 0 AND p.delta = 0 AND r.uid = $ user-> uid) ") -> fetchAll (PDO :: FETCH_ASSOC); Truy vấn này tạo mảng trùng lặp. Làm thế nào tôi có thể giải quyết vấn đề này. – Mandy

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