从简单数组创建关联数组

时间:2013-09-10 14:44:34

标签: php arrays

任何建议什么是在PHP5中更改此数组的最快最好的方法:

Array (
    [0] => fruit
    [1] => apple
    [2] => vegetable
    [3] => corn
    ... etc
)

到这个关联数组?

Array (
    [fruit] => apple
    [vegetable] => corn
    ... etc
)

理论上我需要将每个偶数项设置为键,将每个奇数项设置为值。

谢谢!

3 个答案:

答案 0 :(得分:4)

循环遍历数组,将计数器递增2,然后创建新数组。

$newArray = array();

$len = count($oldArray);
for($i = 0; $i < $len; $i+=2){
    $key = $oldArray[$i];
    $val = $i+1 < $len ? $oldArray[$i+1] : '';

    $newArray[$key] = $val;
}

答案 1 :(得分:3)

只需循环输入数组并在每次迭代时将计数器递增2:

$input = array(
    0 => 'fruit',
    1 => 'apple',
    2 => 'vegetable',
    3 => 'corn',
);

/* remove last item from odd arrays */
if( count( $input ) % 2 != 0 )
{
    array_pop( $input );
}

$output = array();
$inputLength = count( $input );

for( $i = 0; $i < $inputLength; $i = $i + 2 )
{
    $output[$input[$i]] = $input[$i + 1];
}

var_dump( $output );

答案 2 :(得分:3)

只是为了玩耍的快乐......

<?php

$arr = array('fruit', 'apple', 'vegetable', 'corn');

$i = $j = 0;
$newArr = array_combine(
    array_filter($arr, function()use(&$i){ return ++$i%2; }),
    array_filter($arr, function()use(&$j){ return $j++%2; })
);
unset($i, $j, $arr);

print_r($newArr);

working example