Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用foreach和switch将对象添加到数组中,case_Php_Arrays_Object_Sum - Fatal编程技术网

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

Php 如何使用foreach和switch将对象添加到数组中,case,php,arrays,object,sum,Php,Arrays,Object,Sum,嗨,我想在数组中添加一个对象 正如你在下面看到的,我运行了一个数组,基于我创建的最后一个字符和切换大小写,然后我想构建一个新数组,并将第二个字符添加到这个新数组中,这样我就可以对这个新数组进行求和,并打印或回显求和 foreach ($answer as $value) { $last=substr($value,-1); $score=substr($value,-2,1); switch($last){ case a: $a=array(); ar

嗨,我想在数组中添加一个对象

正如你在下面看到的,我运行了一个数组,基于我创建的最后一个字符和切换大小写,然后我想构建一个新数组,并将第二个字符添加到这个新数组中,这样我就可以对这个新数组进行求和,并打印或回显求和

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')这样的数字,我就可以让它工作;
但对于对象,它只是覆盖了第一个对象。这里我做错了什么?

每当这些
case
语句中的一个匹配时,您都会创建一个新数组,这意味着您基本上放弃了之前语句匹配的所有时间,每次都从头开始。将
$a=array()
$b=array()
移动到循环外部,以便只创建一次数组:

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

应该解决这个问题

每次这些
case
语句中的一个匹配时,您都会创建一个新数组,这意味着您实际上是在放弃之前语句匹配的所有时间,每次都从头开始。将
$a=array()
$b=array()
移动到循环外部,以便只创建一次数组:

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

应该可以解决问题

每次通过时都要清除阵列。在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;
  }
}

每次通过都会清除阵列。在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;
  }
}

另一个语法问题是,您应该改为编写
case'a':
case'b':
。快速提示:将
case a:
case b:
更改为
case'a':
case'b':
第一种方法导致
使用未定义的常量a-假定的'a'
警告。另一个语法问题是您应该改为写
case'a':
case'b':
。快速提示:将
case a:
case b:
更改为
case'a':
case'b':
第一种方法导致
使用未定义的常量a-假定的'a'
警告。非常简单…谢谢。我已经很久没有认真编程了;o) 祝你有一个愉快的周末如此简单…非常感谢。我已经很久没有认真编程了;o) 祝你周末愉快