如何使用foreach和switch,case将对象添加到数组中

时间:2011-05-06 20:45:52

标签: php arrays object sum

您好我想将一个对象添加到一个数组

正如你在下面看到的,我运行一个数组并根据我制作的最后一个字符并切换大小写,然后我想构建一个新数组并将secon最后一个字符添加到这个新数组中,所以我可以将mannage总结为新数组并打印或回显总和。

foreach ($answer as $value) {
  $last=substr($value,-1);
  $score=substr($value,-2,1);
  switch($last){
    case a:
      $a=array();
      array_push($a,$score);
      break;
    case b:
      $b=array();
      array_push($b,$score);
      break;
  }
}

在我的html表中,我这样做:

echo array_sum($a)

如果我添加一个像array_push($ a,'2')这样的数字,我可以使它工作; 但是对象只会覆盖第一个。我在这做错了什么?

2 个答案:

答案 0 :(得分:4)

您每次通过时都会清除阵列。在foreach循环之前定义它们:

$a = array();
$b = array();

foreach ($answer as $value) {
  $last=substr($value,-1);
  $score=substr($value,-2,1);
  switch($last){
    case a:
      array_push($a,$score);
      break;
    case b:

      array_push($b,$score);
      break;
  }
}

答案 1 :(得分:0)

每次case个语句中的一个匹配时,您就会创建一个新数组,这意味着您每次都会从头开始丢弃所有以前匹配的语句。移动$a = array()$b = array() OUTSIDE循环,因此数组只创建一次:

$a = array();
$b = array();
foreach (...) {
   ....
}

应解决问题