遍历数组中已知数量的元素,并获取关键的PHP

遍历数组中已知数量的元素,并获取关键的PHP,php,arrays,for-loop,Php,Arrays,For Loop,我有一个网站,我正在使用php打印数组中的键和值 $array = array( "gfo" => "Fondant", "gdo" => "Domino", "ges" => "Espir", "gam" => "Amara", "gsa" => "Sandwich", "gme" => "Merme", "cza" => "Zarza", "cor" =&

我有一个网站,我正在使用php打印数组中的键和值

$array = array(
    "gfo"   => "Fondant",
    "gdo"   => "Domino",
    "ges"   => "Espir",
    "gam"   => "Amara",
    "gsa"   => "Sandwich",
    "gme"   => "Merme",
    "cza"   => "Zarza",
    "cor"   => "Oreo",
    "cal"   => "Almen",
    "cca"   => "eche",
    "cch"   => "Chocolate"
);
但我只想在菜单中显示前6个元素,如

<li>
<a href="product1.php" style="padding:8px 30px;">Product 1</a>
  <ul>                
     <?php foreach($array as $key=>$val):?>
    <li><a href="http://www.site.com.mx/products.php?id=<?=$key?>"><?=$val?></a></li>
     <?php endforeach;?>
  </ul>
</li>
  • 然后是其他菜单中的其他5个元素

    <li>
    <a href="product2.php" style="padding:8px 30px;">Product 2</a>
      <ul>                
         <?php foreach($array as $key=>$val):?>
        <li><a href="http://www.site.com.mx/products.php?id=<?=$key?>"><?=$val?></a></li>
         <?php endforeach;?>
      </ul>
    </li>
    
  • 我知道我可以用

    for ($i = 1; $i <= 6; $i++) {
        echo $i;
    }
    

    对于($i=1;$i您可以使用
    array\u chunk
    将数组拆分为两个单独的块,然后对其中的每个块进行迭代:

    $chunked = array_chunk($array, 6);
    
    用slice()试试

    然后做你的动作,你也可以用

    $first_array = array_chunk($array,6);
    $second_array = array_chunk($array,6,10);
    

    您可以使用
    每个

    $i = 1; reset($array);
    // get the first 6
    while ($i <= 6 && list($key, $val) = each($array)) {
            echo "$key = $val\n";
            ++$i;
    }
    
    // get the rest    
    while (list($key, $val) = each($array)) {
            echo "$key = $val\n";
    }
    
    使用array_keys()和array_values()函数

    $array = array(
        "gfo"   => "Fondant",
        "gdo"   => "Domino",
        "ges"   => "Espir",
        "gam"   => "Amara",
        "gsa"   => "Sandwich",
        "gme"   => "Merme",
        "cza"   => "Zarza",
        "cor"   => "Oreo",
        "cal"   => "Almen",
        "cca"   => "eche",
        "cch"   => "Chocolate"
    );
    $keys = array_keys($array);
    $values = array_values($array);
    
    for ($i = 0; $i < 6; $i++) {
        <li><a href="http://www.site.com.mx/products.php?id=<?=$keys[$i]?>"><?=$values[$i]?></a></li>
    }
    
    $array=array(
    “gfo”=>“方丹”,
    “gdo”=>“Domino”,
    “ges”=>“Espir”,
    “gam”=>“Amara”,
    “gsa”=>“三明治”,
    “gme”=>“Merme”,
    “cza”=>“Zarza”,
    “cor”=>“奥利奥”,
    “cal”=>“Almen”,
    “cca”=>“eche”,
    “cch”=>“巧克力”
    );
    $keys=数组\ U键($array);
    $values=array\u值($array);
    对于($i=0;$i<6;$i++){
    
  • }


    对于($i=6;$i array\u slice()是一种方法,但是我想建议,array\u slice不保留关联数组键。@Jeff仅当它们是数字的(此处没有),并且仅当您不使用标志“preserve\u keys”(5.0.2+)
    
    $i = 1; reset($array);
    // get the first 6
    while ($i <= 6 && list($key, $val) = each($array)) {
            echo "$key = $val\n";
            ++$i;
    }
    
    // get the rest    
    while (list($key, $val) = each($array)) {
            echo "$key = $val\n";
    }
    
    $first_six = array_slice($array, 0, 6, true);
    $rest = array_slice($array, 6, null, true);
    
    $array = array(
        "gfo"   => "Fondant",
        "gdo"   => "Domino",
        "ges"   => "Espir",
        "gam"   => "Amara",
        "gsa"   => "Sandwich",
        "gme"   => "Merme",
        "cza"   => "Zarza",
        "cor"   => "Oreo",
        "cal"   => "Almen",
        "cca"   => "eche",
        "cch"   => "Chocolate"
    );
    $keys = array_keys($array);
    $values = array_values($array);
    
    for ($i = 0; $i < 6; $i++) {
        <li><a href="http://www.site.com.mx/products.php?id=<?=$keys[$i]?>"><?=$values[$i]?></a></li>
    }
    
    for ($i = 6; $i <= sizeof($array); $i++) {
        <li><a href="http://www.site.com.mx/products.php?id=<?=$keys[$i]?>"><?=$values[$i]?></a></li>
    }