我正在使用list和array_chunk拆分数组。在我的第一个示例中,我使用list将数组分为四个部分。
我想将数字从4改为8,并让它动态地执行此操作。而不是在代码中手动创建它。这可能吗 ?我假设我可以使用下面的第二个示例中所列的变量命名。
现在如何工作:
list($inv0, $inv1, $inv2, $inv3) = array_chunk($val['inventory'], ceil(count($val['inventory']) / 4));
我想要设置$ i = 8并自动将其动态拆分为8个块。
类似:
$i = 8
list(${inv.0}, ${inv.1}, ${inv.2}, ${inv.3},${inv.4},${inv.5},${inv.6},${inv.7}) = array_chunk($val['inventory'], ceil(count($val['inventory']) / $i));
因此,根据我的需要,我可以将数组拆分为X个片段,而不是将其硬编码为4或8等。
答案 0 :(得分:1)
您可以执行foreach
创建所需的变量:
$array = ['a','b','c','d','e','f','g','h'];
$chunk = array_chunk($array,2);
foreach($chunk as $i => $data) {
${'inv'.$i} = $data;
}
print_r($inv0);
print_r($inv1);
die();
输出
Array ( [0] => a [1] => b )
Array ( [0] => c [1] => d )
答案 1 :(得分:1)
有很多方法,但是我不认为这是一种可维护的方法,因为您甚至不知道需要处理多少个变量。 但是,费利佩·杜阿尔特(Felipe Duarte)提供了一个有效的答案,这里还有更多内容:php how to generate dynamic list()?
但我同意最高答案。
array_chunk
已经为您提供了您所需要的东西:
$chunks = array_chunk($val['inventory'], ceil(count($val['inventory']) / $i));
print_r($chunks);
// [[0] => ['', ''], [1] => ['','']...]
然后可以通过索引(例如$chunks[0]
,$chunks[1]
)对其进行访问。