簡體   English   中英

我不明白為什么這個 php 函數不起作用

[英]I don't understand why this php function is not working

我目前正在學習php。 我剛剛編寫了這個函數,我希望這個函數能取一個名字並檢查這個名字是否在多數組中。 如果名稱包含在其中,它將返回名稱以及工資和工作。

我使用 foreach 循環遍歷列表。 我在全局范圍內在函數之外創建了列表。 但是當我運行代碼時出現此錯誤。 它說“多個未定義”。 我不明白為什么因為是定義的。

出現以下消息:

Notice: Undefined variable: multy in C:\xampp\htdocs\projects\index.php on line 19

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\projects\index.php on line 19

這是我的代碼

<?php

$multy = [
    [
        'staff' => 'ben', 'job' => 'cooking', 'salary' => 1500,
    ],
    [
        'staff' => 'cy', 'job' => 'chef', 'salary' => 2000,
    ],
    [
        'staff' => 'sylva', 'job' => 'software engineer', 'salary' => 15000,
    ],
];

function checkingList($name){
  foreach($multy as $mult){
    if($mult['staff'] === $name){
      echo $mult['staff'] .', You are hired. Your job is ' . $mult['job'].' and your salary is'. $mult['salary'];
    }
  }
}
checkingList('sylva')
?>

問題是變量范圍。
PHP 中任何函數中使用和定義的變量默認為局部變量; 這意味着它們只能在函數內部通過賦予它們的值來解釋。
更多關於變量范圍
更多關於 PHP 變量

有兩種方法可以在函數內使用定義在其作用域外的變量:
(1) 【常用方式】將變量作為輸入傳遞給函數。
(2) 使用“全局”:

<?php

$multy = [
    [
        'staff' => 'ben', 'job' => 'cooking', 'salary' => 1500,
    ],
    [
        'staff' => 'cy', 'job' => 'chef', 'salary' => 2000,
    ],
    [
        'staff' => 'sylva', 'job' => 'software engineer', 'salary' => 15000,
    ],
];

function checkingList($name){

  //changed code here:
  global $multy;
  //end of change

  foreach($multy as $mult){
    if($mult['staff'] === $name){
      echo $mult['staff'] .', You are hired. Your job is ' . $mult['job'].' and your salary is'. $mult['salary'];
    }
  }
}
checkingList('sylva')
?>

您在函數外部定義了$multy變量,因此您需要將其作為第二個參數傳遞。 所以你的代碼會是這樣的:

$multy = [
    [
        'staff' => 'ben', 'job' => 'cooking', 'salary' => 1500,
    ],
    [
        'staff' => 'cy', 'job' => 'chef', 'salary' => 2000,
    ],
    [
        'staff' => 'sylva', 'job' => 'software engineer', 'salary' => 15000,
    ],
];

function checkingList($name, $multy){
  foreach($multy as $mult){
    if($mult['staff'] === $name){
      echo $mult['staff'] .', You are hired. Your job is ' . $mult['job'].' and your salary is '. $mult['salary'];
    }
  }
}
checkingList('cy', $multy); 
// cy, You are hired. Your job is chef and your salary is 2000

上面的代碼在這里測試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM