微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

函数中PHP数组foreach范围的说明

我有以下PHP代码

$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 举报,一经查实,本站将立刻删除。

相关推荐