如何在PHP中正确使用foreach()?

时间:2018-10-16 23:19:40

标签: php foreach

这是我第一次用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 :(得分:0)

foreach()的第一个参数必须是一个数组。 $ a不是数组 还要注意,您正在尝试使用$ count,它以前没有定义为数组。 “ $ cash”分配应为“ $ count”,反之亦然。

答案 1 :(得分:0)

尝试使用test(array('20' => 0));进行呼叫,但不会收到错误消息。您可能用不是数组的东西来调用它?

答案 2 :(得分:0)

$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

答案 3 :(得分:-2)

也许您可以尝试删除数组末尾的逗号。

更改:'80' => 0,

收件人:'80' => 0

相关问题