Normal bir diziden eşit anahtarlar ve değerler içeren bir assoc dizisi oluşturun


85

Gibi görünen bir dizim var

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

Bu diziyi girdi olarak alacak ve şöyle görünecek bir dizi döndürecek bir işleve sahip olmak istiyorum:

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

Acaba mümkün array_walk_recursivemü ya da benzeri bir şey ...


vay, bu kadar çabuk cevaplarınız için teşekkürler. ilk iki cevap işe yarayacak, ama ben sadece biraz daha zarif bir şey arıyordum.
jimiyash 01

Yanıtlar:


172

array_combineİşlevi şu şekilde kullanabilirsiniz :

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

1
Bu, tek gömlekler için harika. İşte son kullanma ayı için bir kullanım örneği: $ ay = array_combine (aralık (tarih ('Y'), tarih ('Y') + 10), aralık (tarih ('Y'), tarih ('Y') + 10 )).
axiom82

4

Bu basit yaklaşım işe yaramalı:

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

Ayrıca aşağıdaki gibi bir şey de yapabilirsiniz:

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


0

Bunu yapmalı.

function toAssoc($array) {
    $new_array = array();
    foreach($array as $value) {
        $new_array[$value] = $value;
    }       
    return $new_array;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.