Как добавить объект в массив с помощью foreach и switch, case - PullRequest
0 голосов
/ 07 мая 2011

Привет, я хочу объявить объект в массиве

Как вы можете видеть ниже, я пробегаю массив и основываюсь на последнем символе, который я делаю, и переключаю регистр, затем я хочу создать новый массив и добавить второй последний символ в этот новый массив, чтобы я мог суммировать новый массив и выведите или выведите сумму.

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 ]

4 голосов
/ 07 мая 2011

Вы очищаете свои массивы на каждом проходе.Определите их перед циклом 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;
  }
}
0 голосов
/ 07 мая 2011

Вы создаете новый массив каждый раз, когда совпадает одно из этих case утверждений, что означает, что вы по существу отбрасываете все предыдущие случаи совпадения операторов, начиная с нуля каждый раз. Переместите $a = array() и $b = array() ВНЕ ЦИКЛА, чтобы массивы создавались только один раз:

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

должен решить проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...