Erstellen Sie ein Assoc-Array mit gleichen Schlüsseln und Werten aus einem regulären Array

84

Ich habe ein Array, das aussieht

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

Ich möchte eine Funktion haben, die dieses Array als Eingabe verwendet und ein Array zurückgibt, das wie folgt aussehen würde:

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

Ich frage mich, ob es möglich ist, array_walk_recursiveetwas Ähnliches zu verwenden ...

Jimiyash
quelle
wow, danke für deine Antworten so schnell. Die ersten beiden Antworten werden funktionieren, aber ich habe nur nach etwas eleganterem gesucht.
Jimiyash

Antworten:

170

Sie können die array_combineFunktion wie folgt verwenden:

$numbers = array('first', 'second', 'third');
$result = array_combine($numbers, $numbers);
Noah Medling
quelle
1
Dies ist ideal für Einzeiler. Hier ist ein Anwendungsfall für den Ablaufmonat: $ month = array_combine (Bereich (Datum ('Y'), Datum ('Y') + 10), Bereich (Datum ('Y'), Datum ('Y') + 10) )).
Axiom82
4

Dieser einfache Ansatz sollte funktionieren:

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

Sie können auch Folgendes tun:

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

Artem Russakovskii
quelle
0

Das sollte es tun.

function toAssoc($array) {
    $new_array = array();
    foreach($array as $value) {
        $new_array[$value] = $value;
    }       
    return $new_array;
}
Alan Storm
quelle