我的剧本:
<?php
$values='Product1,54,3,888888l,Product2,54,3,888888l,';
$exp_string=explode(",",$values);
$f=0;
foreach($exp_string as $exp_strings)
{
echo "".$f." - ".$exp_string[$f]." ";
if ($f%3==0)
{
print "<br><hr><br>";
}
$f++;
}
?>
使用这段代码,我想在循环中显示数据,这个想法是在组中显示所有信息,每组中的元素是4个元素,必须显示为:
结果:
第1组:
Product1,54€,3,green
第2组:
Product2,56€,12,red
问题是我不知道为什么,不要按照我的意愿展示,例如展示一些元素而不是分组,谢谢,问候
答案 0 :(得分:0)
您似乎正在尝试合并for
循环和foreach
循环的元素。
这是从php手册中提取的每个例子:
<强> For Loop 强>
for($index = 0, $index < size($array), $index++ {
//Run Code
//retrieve elements from $array with $array[$index]
}
<强> Foreach 强>
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
我很难理解你的输入是什么样的。如果您发布$exp_strings
的示例,我可以提供更好的帮助。但是从你的问题的声音来看,如果你需要循环遍历项目组,$exp_strings
是多维的,你可以尝试在另一个循环中嵌套一个循环,如下所示:
$groups_of_data = array(array(...), array(...), array(...));
for($i = 0, $i < size($groups_of_data), $i++) {
$group = $i;
for($j = 0, $j < size($groups_of_data[$i]), $j++) {
// print out data related to group $i
}
}
虽然因为我无法看到你的输入字符串/数组是什么,但这真的是我所有的猜测。你可以发帖吗?也许我可以提供更多帮助。
答案 1 :(得分:0)
这是我编写的代码。这是因为我不知道$ exp_string是什么对象。如果它是一个字符串你应该标记它,但我认为它是来自数据库的数组。还有另一个问题,你的代码尝试输出$ exp_string [$ f]它应该是$ exp_strings循环中的变化。 我的代码
$exp_string=array("Product"=>54,"price"=>3,"color"=>"green");
$f=0;
foreach($exp_string as $key => $exp_strings)
{
if($f%3==0)
{
print "<br><hr><br>";
echo "Product ".$exp_strings."<br> ";
}
else if($f%3==1)
{
echo "Price ".$exp_strings."<br> ";
}
else if($f%3==2)
{
echo "Color ".$exp_strings."<br> ";
}
$f++;
}
希望它有所帮助,也许不是你想要的。
答案 2 :(得分:0)
$values='Product1,1,2,3,Product2,1,2,3,Product3,1,2,3';
$products = (function($values) {
$exp_string = explode(',', $values);
$products = [];
for ($i=0; $i+3<count($exp_string); $i+=4) {
$product = [
'title' => $exp_string[$i],
'price' => $exp_string[$i+1],
'color' => $exp_string[$i+2],
'num' => $exp_string[$i+3],
];
array_push($products, $product);
}
return $products;
})($values);
/* var_dump($products); */
foreach($products as $product) {
echo "{$product['title']},{$product['price']},{$product['color']},{$product['num']}<br>";
}