$car1 = new Car('Ford','Fusion');
$car2 = new Car('Chevy', 'Avalanche');
$car3 = new Car('Ford', 'F150');
$cars = array($car1, $car2, $car3);
function getCarsByMake($carMake){
foreach($cars as $car){
if($car->make == $carMake){
echo 'Car: ' . $car->make . ' ' . $car->model . "<br>";
}
}
}
getCarsByMake('Ford');
我得到的错误是foreach语句中的$cars未定义.但是,据我所知,$cars数组应该是全球范围的吗?如果我通过构造函数将数组传递给函数,它可以正常工作.但我想知道为什么我不能以这种方式访问数组.
解决方法:
你有两个选择.
>添加全局关键字
function getCarsByMake($carMake){
global $cars;
foreach($cars as $car){
if($car->make == $carMake){
echo 'Car: ' . $car->make . ' ' . $car->model . "<br>";
}
}
}
>使用$GLOBALS
阵列:
function getCarsByMake($carMake){
foreach($GLOBALS["cars"] as $car){
if($car->make == $carMake){
echo 'Car: ' . $car->make . ' ' . $car->model . "<br>";
}
}
}
虽然我仍然建议将它作为一个显式参数传递,因为它使代码更易读和可维护,恕我直言.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。