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

发布于 2024-11-05 17:40:48 字数 549 浏览 0 评论 0原文

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

正如您在下面看到的,我运行一个数组并根据我创建的最后一个字符并切换大小写,然后我想构造一个新数组并将最后一个字符添加到这个新数组中,所以我可以设法对这个新数组求和并打印或回显总和。

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

Hi I wanna ad an object to an array

As you can see below I run through an array and based on the last character i make and switch case, then I wanna construct a new array and add the secon last character to this new array, so I can mannage to sum this new array and print or echo the sum.

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;
  }
}

In my html table I do this:

echo array_sum($a)

I can make it work if I add a digit like array_push($a,'2');
but with the object it just overwrite the first one. what do I do wrong here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ぇ气 2024-11-12 17:40:48

你每次都在清除你的数组。在 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;
  }
}

You're clearing your arrays on every pass. Define them before the foreach loop:

$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;
  }
}
海螺姑娘 2024-11-12 17:40:48

每次这些 case 语句匹配时,您都会创建一个新数组,这意味着您实际上会丢弃该语句之前所有匹配的时间,每次都从头开始。将 $a = array()$b = array() 移到循环之外,因此数组仅创建一次:

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

应该可以解决问题

You're creating a new array each time one of those case statements matches, which means you're essentially throwing away all the previous times the statement matched, starting from scratch each time. Move the $a = array() and $b = array() OUTSIDE the loop, so the arrays are created only once:

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

should fix up the problem

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文