Створіть масив 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 (діапазон (дата ('Y'), дата ('Y') + 10), діапазон (дата ('Y'), дата ('Y') + 10 )).
axiom82

4

Цей простий підхід повинен працювати:

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

Ви також можете зробити щось на зразок:

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


0

Це має зробити це.

function toAssoc($array) {
    $new_array = array();
    foreach($array as $value) {
        $new_array[$value] = $value;
    }       
    return $new_array;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.