สร้างอาร์เรย์ Assoc ที่มีคีย์และค่าเท่ากันจากอาร์เรย์ปกติ


85

ฉันมีอาร์เรย์ที่ดูเหมือน

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

ฉันต้องการมีฟังก์ชันที่จะรับอาร์เรย์นี้เป็นอินพุตและส่งคืนอาร์เรย์ที่มีลักษณะดังนี้:

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

สงสัยว่าจะใช้ได้array_walk_recursiveหรือคล้าย ๆ กัน ...


ว้าวขอบคุณสำหรับคำตอบของคุณอย่างรวดเร็ว สองคำตอบแรกใช้ได้ผล แต่ฉันแค่มองหาบางอย่างที่หรูหรากว่านี้
jimiyash

คำตอบ:


172

คุณสามารถใช้array_combineฟังก์ชันดังต่อไปนี้:

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

1
เหมาะสำหรับเรือเดินสมุทร นี่คือกรณีการใช้งานสำหรับเดือนที่หมดอายุ: $ months = array_combine (range (date ('Y'), date ('Y') + 10), range (date ('Y'), date ('Y') + 10 )).
axiom82

4

แนวทางง่ายๆนี้ควรได้ผล:

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

คุณยังสามารถทำสิ่งต่างๆเช่น:

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


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.