2012-04-26 56 views
26

Tôi có một mảng của mảng như sau:Làm cách nào để trích xuất các giá trị và khóa mảng cụ thể cho một mảng khác?

array(array(), array(), array(), array()); 

các mảng bên trong các mảng chính chứa 4 khóa và giá trị của họ. Các phím đều giống nhau trong tất cả các mảng như thế này:

array('id' => 'post_1', 
     'desc' => 'Description 1', 
     'type' => 'type1', 
     'title' => 'Title' 
    ); 

array('id' => 'post_2', 
     'desc' => 'Description 2', 
     'type' => 'type2', 
     'title' => 'Title' 
    ); 

Vì vậy, tôi muốn tạo mảng khác và trích xuất các giá trị idtype và đặt chúng trong một mảng mới như thế này:

array('post_1' => 'type1', 'post_2' => 'type2'); // and so on 

Các các khóa trong mảng này sẽ là giá trị của id các mảng cũ chính và giá trị của chúng sẽ là giá trị của khóa type.

Vì vậy, có thể đạt được điều này không? Tôi đã thử tìm kiếm php.net Array Functions nhưng tôi không biết sử dụng chức năng nào?

Và cảm ơn trước.

Trả lời

25

Chỉ cần sử dụng một ol tốt' loop:

$newArray = array(); 
foreach ($oldArray as $entry) { 
    $newArray[$entry['id']] = $entry['type']; 
} 
+10

Tôi upvoted câu hỏi và câu trả lời. Làm thế nào tôi có thể downvote PHP cho không cung cấp một phương pháp tốt hơn? –

+1

@ Olivier'Ölbaum'Scherler Tin tốt: php đã cung cấp một chức năng cho việc này - xem câu trả lời được bình chọn cao hơn. – mickmackusa

67

PHP được thêm gần đây chức năng mới để mảng chức năng của họ thực hiện chính xác những gì bạn muốn. Tôi đang trả lời câu hỏi này với hy vọng rằng nó có thể giúp ai đó trong tương lai với câu hỏi này.

Chức năng thực hiện điều này là array_column. Để có được những gì bạn muốn, bạn sẽ viết:

array_column($oldArray, 'type', 'id'); 

Xin lưu ý rằng nó chỉ giới thiệu trong PHP phiên bản 5.5.0, vì vậy sử dụng nó trên các phiên bản thấp hơn của PHP hoặc sử dụng chấp nhận câu trả lời hoặc có một cái nhìn như thế nào chức năng này được thực hiện trong PHP và sử dụng thư viện này: https://github.com/ramsey/array_column

+1

Ngoài ra, bạn có thể bọc nó trong mảng_unique để lọc ra các giá trị dupliate :) http://php.net/manual/en/function.array-unique.php –

-2

giả sử chúng ta có một mảng $ oldArray từ đó chúng ta muốn trích xuất và mảng thứ hai $ mảng là một trong đó chúng ta sẽ có sto đổ chuông các giá trị được trích xuất ban đầu để trống.

$oldArray = array(
    0 => array('id' => 'post_1', 
      'desc' => 'Description 1', 
      'type' => 'type1', 
      'title' => 'Title' 
     ), 

    1 => array('id' => 'post_2', 
      'desc' => 'Description 2', 
      'type' => 'type2', 
      'title' => 'Title' 
     ) 
); 

$array = array(); //Blank array 

foreach(oldArray as $i => $oldarray){ 
    $array[$i][$oldarray['id']] = $oldarray['type']; 
} 

Bây giờ $ mảng có cặp khóa/giá trị như sau

array(
    0 => array('post_1' => 'type1'), 

    1 => array('post_2' => 'post_2') 
); 
Các vấn đề liên quan