2014-11-29 17 views
5
$items = array(
     1 => [ 
      "id" => 5 
     ], 

     3 => [ 
      "id" => 6 
     ], 
     4 => [ 
      "id" => 7 
     ], 
    ); 

    var_dump(array_column($items,"id")); 

kết quả,PHP array_column - cách giữ khóa?

array (size=3) 
    0 => int 5 
    1 => int 6 
    2 => int 7 

Nhưng làm thế nào tôi có thể giữ chìa khoá $items để tôi có thể có được điều này dưới đây?

array (size=3) 
    1 => int 5 
    3 => int 6 
    4 => int 7 

Trả lời

2
foreach(key($parameters) as $key) 
{ 
print($key); 
} 

Bạn cũng có thể lưu trữ kết quả trong các biến số khác nếu muốn.

Và để hiển thị cả khóa và giá trị thử điều này:

foreach ($parameters as $key => $value) { 
echo $key . ' = ' . $value . '<br>'; 
} 
10

Xem nếu điều này có thể giúp

array_filter(array_combine(array_keys($items), array_column($items, 'id'))); 
+0

Sẽ làm việc này ngay cả khi một số mục không có một 'id'? –

+0

Không, Đây không phải là mã chung. Nó sẽ làm việc cho câu hỏi được hỏi ở trên. –

1

Một lựa chọn khác là sử dụng array_map

$result = array_map(function($item) {return $item['id'];}, $items);

+0

Đây là một giải pháp cho ví dụ, nhưng không có giải pháp hợp lệ cho vấn đề. Nếu bạn có một mảng với một "subarray" mà không chứa một cặp khóa-giá trị với id khóa, cặp này sẽ vẫn ở trong kết quả, như với array_column nó sẽ không. – garyee

-1

Đối với bạn ví dụ chỉ với một cột id

array_map('current', $items); 
+0

Đây là giải pháp cho ví dụ, nhưng không có giải pháp hợp lệ cho vấn đề. Nếu bạn có một mảng với một "subarray" mà không chứa một cặp khóa-giá trị với id khóa, cặp này sẽ vẫn ở trong kết quả, như với array_column nó sẽ không. – garyee

4

Tìm kiếm các giải pháp tương tự và kết hợp một số thủ thuật, tôi tạo này:

$userdb=Array 
(
    "test1" => array 
    (
     'uid' => '100', 
     'name' => 'Sandra Shush', 
     'url' => 'urlof100' 
    ), 
    "test2" => array 
    (
     'uid' => '5465', 
     'name' => 'Stefanie Mcmohn', 
     'pic_square' => 'urlof100' 
    ), 
    "test3" => array 
    (
     'uid' => '40489', 
     'name' => 'Michael', 
     'pic_square' => 'urlof40489' 
    ) 
); 

echo $key = array_search(
    40489, 
    array_filter(
     array_combine(
      array_keys($userdb), 
      array_column(
       $userdb, 'uid' 
      ) 
     ) 
    ) 
); 

Kết quả là 'Test3'.

Làm việc theo số mảng hoặc mảng được đặt tên.

1

Tôi nghĩ rằng đây là cách nhanh nhất để giữ phím mà không cần các vòng lặp và lặp

array_diff(array_combine(array_keys($items), array_column($items, 'id')), [null]) 
Các vấn đề liên quan