ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

仅在PHP循环期间值在特定组内时打印出某些内容

2019-11-20 06:29:43  阅读:175  来源: 互联网

标签:loops foreach arrays php


我在整个站点中使用了大量阵列,仅为了以下任务而更改其结构将很痛苦.我想用另一个数组制作几个选择框.我想要得到的输出是这样的:

/* Example Array:

  $allAnimals = array("Frogs","Toads","Bats","Elephants","Rats","Seals",
                      "Crocodilians","Turtles");

  $group = array("Frogs"=>"Amphibian","Bats"=>"Mammal","Crocodilians"=>"Reptile");
*/

<select name='Amphibian'>
   <option value='0'>Frogs</option>
   <option value='1'>Toads</option>
</select>

<select name='Mammal'>
   <option value='2'>Bats</option>
   <option value='3'>Elephants</option>
   <option value='4'>Rats</option>
   <option value='5'>Seals</option>
</select>

<select name='Reptile'>
   <option value='6'>Crocodilians</option>
   <option value='7'>Turtles</option>
</select>

我无法弄清楚如何仅在$group每次迭代期间值在特定动物组内时打印出选项.我尝试过each()从$group获取下一个动物$endAnimal,然后如果$animal与$endAnimal相匹配,则中断内部循环,但是我还需要使循环开始以特定值打印选项.

<?php

 $allAnimals = array("Frogs","Toads","Bats","Elephants","Rats","Seals","Crocodilians","Turtles");

$group = array("Frogs"=>"Amphibian","Bats"=>"Mammal","Crocodilians"=>"Reptile");

foreach($group as $thisAnimal=>$category){

   $nextKey = (each($group));

   $endAnimal = $nextKey['key'];

   print "<select name='$category'>";

   foreach($allAnimals as $idx=>$animal){

      print "<option value='$idx'>$animal</option>";

      if($endAnimal === $animal){
          break;
      } 
   }

   print "</select>";

}

?>

解决方法:

请检查一下:

 <?php

 $allAnimals = array("Frogs","Toads","Bats","Elephants","Rats","Seals","Crocodilians","Turtles");

$group = array("Frogs"=>"Amphibian","Bats"=>"Mammal","Crocodilians"=>"Reptile");

$group_keys = array_keys($group); // get the keys of group array
$j = 0;
foreach($group_keys as $key => $group_k){
   print "<select name='$group[$group_k]'>";
   if(isset($group_keys[$key+1])){
    $new_value = $group_keys[$key+1];
   }else{
       $new_value = '';
   }
   if($new_value ==''){
      foreach($allAnimals as $key => $allAnm){
        print "<option value='$j'>$allAnm</option>";
        unset($allAnimals[$key]);
        $j ++;
      }
   }else{

        $key_from = array_search($new_value,$allAnimals);

       for($i = 0; $i<$key_from; $i++){
            print "<option value='$j'>$allAnimals[$i]</option>";
            unset($allAnimals[$i]);
            $j ++;

       }
   }

   $allAnimals = array_values($allAnimals);
   print "</select>";
}

输出:-https://eval.in/379462(eval.in)

本地端:-(为了更好地显示):-http://prntscr.com/7fmtbi

标签:loops,foreach,arrays,php
来源: https://codeday.me/bug/20191120/2041964.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有