Индексированный / числовой массив в ассоциативный массив с PHP - PullRequest
1 голос
/ 18 марта 2012

Есть ли в любом случае индексированный массив, скажем, ['1' => 'dave, '2' => 'ryan', '3' => 'mike', '4' => 'sam'], который можно превратить в ассоциативный массив.Который в этом случае будет ['dave' => 'ryan', 'mike' => 'sam'].

Очевидно, что в контексте и на примере, который я привел, это не имеет особого смысла, но было бы полезно знать это.

Все, что я могу найти в Google или здесь, - это способы сделать обратное (ассоциативное -> проиндексированное), если я полностью не пропущу очевидный ответ.

Ответы [ 2 ]

1 голос
/ 18 марта 2012

Это самый простой способ, который я могу придумать для вашего примера:

$arr = array('1' => 'dave', '2' => 'ryan', '3' => 'mike', '4' => 'sam');
$result = array();
$key = null;

foreach(array_keys($arr) as $k) {
    $v = $arr[$k];

    if($key === null) {
        $key = $v;
    } else {
        $result[$key] = $v;
        $key = null;
    }
}

Вот демонстрация.

1 голос
/ 18 марта 2012
$array = array('1' => 'dave', '2' => 'ryan', '3' => 'mike', '4' => 'sam');
$result = array();
for($i = 1; $i <= count($array); $i += 2) {
  $result[$array[$i]] = $array[$i+1];
}

Выход

var_dump($result);
array(2) {
  ["dave"]=>
  string(4) "ryan"
  ["mike"]=>
  string(3) "sam"
}
...