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.