我在整个站点中使用了大量阵列,仅为了以下任务而更改其结构将很痛苦.我想用另一个数组制作几个选择框.我想要得到的输出是这样的:
/* Example Array:
$allAnimals = array("Frogs","Toads","Bats","Elephants","Rats","Seals",
"Crocodilians","Turtles");
$group = array("Frogs"=>"Amphibian","Bats"=>"Mammal","Crocodilians"=>"Reptile");
*/
Frogs
Toads
Bats
Elephants
Rats
Seals
Crocodilians
Turtles
我无法弄清楚如何仅在$group每次迭代期间值在特定动物组内时打印出选项.我尝试过each()从$group获取下一个动物$endAnimal,然后如果$animal与$endAnimal相匹配,则中断内部循环,但是我还需要使循环开始以特定值打印选项.
$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 "";
foreach($allAnimals as $idx=>$animal){
print "$animal";
if($endAnimal === $animal){
break;
}
}
print "";
}
?>
解决方法:
请检查一下:
$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 "";
if(isset($group_keys[$key+1])){
$new_value = $group_keys[$key+1];
}else{
$new_value = '';
}
if($new_value ==''){
foreach($allAnimals as $key => $allAnm){
print "$allAnm";
unset($allAnimals[$key]);
$j ++;
}
}else{
$key_from = array_search($new_value,$allAnimals);
for($i = 0; $i
print "$allAnimals[$i]";
unset($allAnimals[$i]);
$j ++;
}
}
$allAnimals = array_values($allAnimals);
print "";
}
标签:loops,foreach,arrays,php
来源: https://codeday.me/bug/20191120/2041964.html