代码之家  ›  专栏  ›  技术社区  ›  Mike Q

使用列表和数组块分割数组以满足动态需求

php
  •  0
  • Mike Q  · 技术社区  · 8 年前

    我正在使用列表和数组块来拆分数组。在我的第一个例子中,我使用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 回复  |  直到 8 年前
        1
  •  1
  •   Felippe Duarte    8 年前

    你可以做一个 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 )
    
        2
  •  1
  •   user1453870    8 年前

    有很多方法,但我不认为这是一种可维护的方法,因为您甚至不知道需要处理多少变量。 然而,费利佩·杜阿尔特给出了一个有效的答案,这里还有更多: 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] )中。

    推荐文章