我在索引数组中有数据,其中偶数索引值是键,而奇数是值,我正在尝试使它们成为新数组中的键值,请参见下面的代码并提出建议。
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;
}
}
答案 0 :(得分:2)
结合使用array_combine
和array_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
)
答案 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)