Создайте связанный массив с равными ключами и значениями из обычного массива


85

У меня есть массив, который выглядит как

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

Я хочу иметь функцию, которая будет принимать этот массив в качестве входных данных и возвращать массив, который выглядел бы так:

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

Интересно, можно ли использовать array_walk_recursiveили что-то подобное ...


вау, спасибо за ответы так быстро. первые два ответа будут работать, но я просто искал что-то более элегантное.
jimiyash 01

Ответы:


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))


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.