我有以下数组:
$list = array('item1','item2','item3','item4','item5','item6');
我需要取这个数组,并将其分解为csv的1个数组中的较小数组。每个小数组的索引0处都需要有"999999",然后是$list
数组中的下两个项。所以最终的结果是这样的:
$newList = array(
array(999999, "item1" , "item2"),
array(999999, "item3" , "item4"),
array(999999, "item5" , "item6")
);
原始列表数组有时可能包含多达100个值。实现这一目标的最佳方式是什么?
这里有一种不同的方法,请查看关于将额外元素放置在何处的注释(您可以在末尾的合并中添加第二个数组,以在2个列表项之后添加元素!)
有关工作示例,请参见此处:http://codepad.org/hucpT5Yo
<?php
$list = array('item1','item2','item3','item4','item5','item6');
$list_chunks = array_chunk($list,2);
$list_chunks2 = array_map(
create_function(
'$x',
'return array_merge(array(
/* This array is prepended to the second,
add as many elements as you like */
999999,
"another element to add",
483274832
),
$x);'),
$list_chunks);
print_r($list_chunks2);
?>
$idx = 0;
$newarray = array();
$temparray = array('999999');
foreach($oldarray as $value) {
$temparray[] = $value;
if ((++$idx % 2)) == 0) {
$newarray[] = $temparray;
$temparray = array('999999');
}
}
将平面数组分解为一个包含array_chunk()
行的数组,然后在每行调用array_merge()
,静态值999999
嵌套在数组中并指定为第一个参数。
@Lee演示的chunk-n-merge技术的现代语法如下:
代码:(演示)
$list = ['item1','item2','item3','item4','item5','item6'];
var_export(
array_map(fn($row) => array_merge([999999], $row), array_chunk($list, 2))
);
输出:
array (
0 =>
array (
0 => 999999,
1 => 'item1',
2 => 'item2',
),
1 =>
array (
0 => 999999,
1 => 'item3',
2 => 'item4',
),
2 =>
array (
0 => 999999,
1 => 'item5',
2 => 'item6',
),
)