我收到了一个错误:
注意:未定义的变量:价格
使用此代码:
<?php
$price[1] = 100;
$store[1] = "apple";
function check ($m) {
if ($m == "apple") {
$z = $price[1];
}
return $z;
}
?>
<?= check( $store[1] ) ?>
不是让$z
等于price[1]
,而是尝试将其设置为不存在的price
。
如何正确定义它?
答案 0 :(得分:2)
$price
在函数范围内未定义。如果您需要您的函数来访问该变量,可以使用几种方法。最直接的方法是将$price
添加为您的函数的另一个参数。
function check ($m, $price) { ...
然后在拨打$price
时使用check()
数组作为第二个参数:
<?= check( $store[1], $price) ?>
请注意,您的函数中的$price
不是与函数外部相同的变量,而是它的副本。
您可以在PHP文档here中了解有关变量范围的更多信息。最好避免使用global
,除非出于某种原因完全必要。在这种情况下,它没有必要。
答案 1 :(得分:1)
您正在询问特定问题 - 这很容易解决 - 但是真的您正在尝试完成比您提供的代码示例更难解决的其他问题。
鉴于您的代码,以及一些&#34;假设&#34;在你可能会去的地方,我会建议更像这样的东西:
$price[1] = 100;
$price[2] = 150;
$price[5] = 225;
$store[1] = "apple";
$store[2] = "orange";
$store[5] = "kiwi";
// Option 1: Global in the variables. Nothing wrong with it here...
function check ( $m ) {
global $price, $store;
$index = array_search( $m, $store );
return ( isset( $price[ $index ] ) ) ? $price[ $index ] : 0;
}
// usage:
echo check( $store[1] );
// Option 2: Pass in all the variables you need
function check ( $m, $price, $store ) {
$index = array_search( $m, $store );
return ( isset( $price[ $index ] ) ) ? $price[ $index ] : 0;
}
// usage:
echo check( $store[1], $price, $store );
// Option 3: Since you seem to know the index already, just pass THAT in
function check ( $index, $price, $store ) {
return ( isset( $price[ $index ] ) ) ? $price[ $index ] : 0;
}
// usage:
echo check( 1, $price, $store );
// Option 4: Globals, plus since you seem to know the index already, just pass THAT in
function check ( $index ) {
global $store, $price;
return ( isset( $price[ $index ] ) ) ? $price[ $index ] : 0;
}
// usage:
echo check( 1 );
答案 2 :(得分:0)
变量未在函数内定义,您需要将函数内所需的所有变量作为参数传递,例如:
$price[1] = 100;
$store[1] = "apple";
function check ($m, $price) {
if ($m == "apple") {
$z = $price[1];
}
return $z;
}
//use the function
check( $store[1], $price )
答案 3 :(得分:0)
试试这个:
function check ($m) {
global $price;
(...)