如何使用 foreach 和 switch、case 将对象添加到数组
您好,我想将一个对象添加到数组中,
正如您在下面看到的,我运行一个数组并根据我创建的最后一个字符并切换大小写,然后我想构造一个新数组并将最后一个字符添加到这个新数组中,所以我可以设法对这个新数组求和并打印或回显总和。
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你每次都在清除你的数组。在 foreach 循环之前定义它们:
You're clearing your arrays on every pass. Define them before the foreach loop:
每次这些
case
语句匹配时,您都会创建一个新数组,这意味着您实际上会丢弃该语句之前所有匹配的时间,每次都从头开始。将$a = array()
和$b = array()
移到循环之外,因此数组仅创建一次:应该可以解决问题
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:should fix up the problem