Tạo một mảng assoc với các khóa và giá trị bằng nhau từ một mảng thông thường


85

Tôi có một mảng trông giống như

$numbers = array('first', 'second', 'third');

Tôi muốn có một hàm sẽ lấy mảng này làm đầu vào và trả về một mảng giống như sau:

array(
'first' => 'first',
'second' => 'second',
'third' => 'third'
)

Tôi tự hỏi nếu nó có thể sử dụng array_walk_recursivehoặc một cái gì đó tương tự ...


wow, cảm ơn vì câu trả lời của bạn rất nhanh. hai câu trả lời đầu tiên sẽ hoạt động, nhưng tôi chỉ đang tìm kiếm thứ gì đó thanh lịch hơn một chút.
jimiyash

Câu trả lời:


172

Bạn có thể sử dụng array_combinechức năng như sau:

$numbers = array('first', 'second', 'third');
$result = array_combine($numbers, $numbers);

1
Điều này là tuyệt vời cho một lớp lót. Đây là trường hợp sử dụng cho tháng hết hạn: $ months = array_combine (range (date ('Y'), date ('Y') + 10), range (date ('Y'), date ('Y') + 10 )).
axiom82

4

Cách tiếp cận đơn giản này sẽ hoạt động:

$new_array = array();
foreach($numbers as $n){
  $new_array[$n] = $n;
}

Bạn cũng có thể làm điều gì đó như:

array_combine(array_values($numbers), array_values($numbers))


0

Điều này nên làm điều đó.

function toAssoc($array) {
    $new_array = array();
    foreach($array as $value) {
        $new_array[$value] = $value;
    }       
    return $new_array;
}
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.