【问题标题】:Best way to slice multidimensional array on the basis of keys in PHP?根据 PHP 中的键对多维数组进行切片的最佳方法?
【发布时间】:2025-12-29 11:35:12
【问题描述】:

我有一个这样的结果数组:-

    $array = array(
                    'key1' => array('...'),
                    'key2' => array('...'),
                    'key3' => array('...'),
                    'key4' => array('...'),
                    .
                    .
                    .
                    .
                    'keyn' => array('...')
            );

我需要从上面的数组中获取 5 个元素。第一次key1key5key6key10 等等……根据情况我需要对此进行操作。

我需要输出:-

$array = array(
                    'key1' => array('...'),
                    'key2' => array('...'),
                    'key3' => array('...'),
                    'key4' => array('...'),
                    'key5' => array('...')
            );

如果我的键值直接$array['key1']....$array['key5'],我可以获得值,但如果键值未知 我面临问题。

提前致谢。

【问题讨论】:

  • 我不太确定这个问题。你试过array_slice(),如果是,有什么问题?

标签: php arrays multidimensional-array


【解决方案1】:

array_slice 肯定适合你

    $first_five_elements = array_slice($array, 0, 5);

这里是codepad

【讨论】:

    【解决方案2】:

    编辑:更好的方法是 array_slice。请参阅this 问题。示例:

    $fifthElement = array_slice($array,4,1);  //will get the 5th element
    

    您可以使用foreach 为您提供键和相关值。所以,要得到第五个键值对,你可以这样写:

    $i = 1;
    foreach($array as $key => $value)
    {
        if($i == 5)
        {
            echo "Fifth Key=".$key." value=".$value."\n";
        }
        $i++;
    }
    

    【讨论】:

    • 感谢 Geier 的快速回复。我知道这种方式,但如果我的结果数组中有 1000 个元素,那么我需要检查 200 个条件???
    • @user1978104:你说得对,这种方法效率很低。查看更新的答案。
    【解决方案3】:

    您可以拼接或分割数组的前 5 个项目。

    <?php
     $array = array(
                        'key1' => array('...'),
                        'key2' => array('...'),
                        'key3' => array('...'),
                        'key4' => array('...'),
                        'key5' => array('...'),
                        'key6' => array('...'),
                        'key7' => array('...')
                );
    
    $arraySlice1 = array_slice($array, 0, 5);
    $arraySlice2 = array_splice($array, 0, 5);
    

    Slice 会保持 $array 不变,$array 仍然会保存 7 个元素,splice 会从 $array 中移除返回的结果,所以 $array 只会保存 key6 和 key7

    【讨论】:

      【解决方案4】:

      要遍历这样的数组,您可以通过这种方式使用array_slice()

      $n = count($array);
      $len = 5;
      for ($i = 0; $i + $len <= $n; $i += $len) {
          $chunk = array_slice($array, $i, $len, true);
          // do work on $chunk
      }
      

      【讨论】:

        最近更新 更多