使用list和array_chunk拆分数组以实现动态需求

时间:2018-06-29 17:30:10

标签: php

我正在使用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等。

2 个答案:

答案 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])对其进行访问。