计算循环foreach

时间:2017-12-28 21:14:28

标签: php foreach count

我的剧本:

<?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

问题是我不知道为什么,不要按照我的意愿展示,例如展示一些元素而不是分组,谢谢,问候

3 个答案:

答案 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>";
}