如何使数组中的偶数索引值作为键,而使奇数作为值

时间:2019-04-14 22:37:49

标签: php arrays

我在索引数组中有数据,其中偶数索引值是键,而奇数是值,我正在尝试使它们成为新数组中的键值,请参见下面的代码并提出建议。

Array
(
 [0] => firstName
 [1] => bob
 [2] => lastName
 [3] => alex
)

代码

    $k = array();
    $v = array();

    foreach ($a as $key => $value) {
        if ($key % 2 == 0) {
            $k[] = $value;
        }else{
            $v[] = $value;
        }
    }

5 个答案:

答案 0 :(得分:2)

结合使用array_combinearray_filter的替代解决方案:

$joined = array_combine(
    array_filter($a, function($key) { return $key % 2 == 0; }, ARRAY_FILTER_USE_KEY),
    array_filter($a, function($key) { return $key % 2 != 0; }, ARRAY_FILTER_USE_KEY)
);

$joined将是:

Array
(
    [firstName] => bob
    [lastName] => alex
)

当然,这仅适用于条目数为偶数的数组。

答案 1 :(得分:1)

这是一个使用array_intersect_key选择奇数值然后选择偶数值(使用range生成键值列表),然后使用array_combine的解决方案从这些值集生成输出:

$a = [ 'firstname' , 'bob' , 'lastname' , 'alex' ];

$new = array_combine(
    array_intersect_key($a, array_flip(range(0, count($a) - 1, 2))),
    array_intersect_key($a, array_flip(range(1, count($a) - 1, 2)))
    );

print_r($new);

输出:

Array (
  [firstname] => bob
  [lastname] => alex 
)

Demo on 3v4l.org

答案 2 :(得分:0)

我不清楚您的意思是什么,但是Key =>这样做可以实现价值。

obj.anotherMethod = functionDeclaredAtTopOfFile

答案 3 :(得分:0)

尝试使用一个将整数跳过2的循环。

...
wrapper.append('<td><?php echo $Kernel->gI("Balanceapp")->returnSelect(...); ?></td>');
...

答案 4 :(得分:0)

您可以使用简单的for循环

$contents = [ 'firstname' , 'bob' , 'lastname' , 'alex' ];
$a = [];

for( $i = 0; $i<= count( $contents ) - 1; $i++ ){
    $a[ $contents[ $i ] ] = $contents[ $i + 1 ]; 
    $i++; //add another to skip every second
}

var_dump( $a );

输出:

array (size=2)
  'firstname' => string 'bob' (length=3)
  'lastname' => string 'alex' (length=4)