Как правильно использовать foreach () в PHP? - PullRequest
0 голосов
/ 17 октября 2018

Это мой первый раз код на PHP.Я пытаюсь вернуть массив, который содержит сумму каждого типа наличных

public function test($a){
    $a = [];
        $cash = array(
            '20'   => 0,
            '30'   => 0,
            '40'   => 0,
            '50'  => 0,
            '60'  => 0,
            '70'  => 0,
            '80' => 0,
        );

        foreach($a as $k => $v) {
            if (array_key_exists("$k",$cash) && $v!= null ) {
                $cash[$k] += 1;
            }
        }

        return  $cash;
    }

Когда я пытаюсь проверить код, я получаю ошибку: Invalid argument supplied for foreach()

Ответы [ 4 ]

0 голосов
/ 17 октября 2018
$cash[$key] += 1;

должно быть

$cash[$k] += 1;

Я включил код, который я использовал для тестирования здесь: -

<?php
function test($a){
  $cash = array(
    '20' => 0,
    '30' => 0,
    '40' => 0,
    '50' => 0,
    '60' => 0,
    '70' => 0,
    '80' => 0,
  );

  foreach($a as $k => $v) {
      if (array_key_exists("$k",$cash) && $v != NULL ) {
        $cash[$k] += 1;
      }
    }
  return  $cash;
}

// code that I have added to test the function from the post question
$testArray = array(
  '20' => 1,
  '30' => 2,
  '40' => 3,
  '50' => 4,
  '60' => 5,
  '70' => 6,
  '80' => 7,
);

$cash = test($testArray);

foreach($cash as $k => $v) {
  echo("\n$k : $v");
}

?>

Результаты: -

20 : 1
30 : 1
40 : 1
50 : 1
60 : 1
70 : 1
80 : 1
0 голосов
/ 17 октября 2018

1-й аргумент для foreach () должен быть массивом.$ a не массив. Также обратите внимание, что вы пытаетесь использовать $ count, который ранее не был определен как массив.Либо это присвоение «$ cash» должно быть «$ count», либо наоборот.

0 голосов
/ 17 октября 2018

Попробуйте позвонить с test(array('20' => 0));, и вы не получите ошибку.Вы, вероятно, вызываете это с чем-то, что не является массивом?

0 голосов
/ 17 октября 2018

Возможно, вы можете попробовать удалить запятую в конце массива.

изменить: '80' => 0,

на: '80' => 0

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