![](/img/trans.png)
[英]password_verify, don't understand why is not working | PHP, MYSQL
[英]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.