0

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

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

到这个关联数组?

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

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

谢谢!

4

3 回答 3

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;
}
于 2013-09-10T14:47:00.310 回答
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 );
于 2013-09-10T14:47:56.643 回答
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

于 2013-09-10T15:32:11.867 回答