【发布时间】:2017-01-18 09:53:40
【问题描述】:
我正在尝试使用 PHP 中的面向对象编程,以使我的 PHP 代码更多可重用和模块化。
它终于点击了,我明白了,并看到在我的代码中使用类的好处,但在测试中,遇到了一个我无法弄清楚的问题。
我有两个用户名数组
$commDocsAdminUsers
$commDocsAdminExecutiveUsers
我有以下类来创建一个新的 $currentUser 并尝试使用 in_array 来查找用户所在的这两个数组中的哪一个。
我不断收到一个 PHP 错误,说它认为数组不是数组:
Warning: in_array() expects parameter 2 to be array, null given in - on line 25
这是我正在使用的...
<?php
//ARRAYS OF USERS TO CHECK AGAINST
$commDocsAdminUsers = array("kaisersolze", "bennyblanco", "carlitobrigante", "ashylarry", "claytonbigsby");
$commDocsAdminExecutiveUsers = array("waltjr", "skylerwhite", "tuco", "skinnypete", "walterwhite");
class userLogin {
// ALLOWS US TO SET THE NAME OF USER
function set_name($new_name) {
$this->name = $new_name;
}
// ALLOWS US TO GET THE NAME OF USER
function get_name() {
return $this->name;
}
// ALLOWS US TO CHECK THE ACCESS LEVEL OF THE USER... FIND WHICH ARRAY USER IS IN
function check_access() {
if (in_array("kaisersolze", $commDocsAdminUsers)){
return "Match found in comDocsUsers Array";
}
else if (in_array($this->name, $commDocsAdminExecutiveUsers)){
return "Match found in comDocsUsers Array";
}
else {
return "No Access Allowed"; // USER NOT FOUND IN EITHER ARRAY
}
}
}
// NOW LETS DO SOME STUFF WITH OUR NEW CLASS
$currentUser = new userLogin(); // INVOKE THE NEW USER CLASS
$currentUser->set_name("kaisersolze"); // SET NAME OF CURRENT USER
print_r($currentUser); // SHOW THE FULL OBJECT $CURRENTUSER
echo '<BR>-------------------------------------------------------------<BR>';
echo $currentUser->get_name(); // ECHO OUT THE NAME FOR THE $CURRENTUSER
echo '<BR>--------------------------------------------------------------<BR>';
echo $currentUser->check_access(); // CHECK TO SEE WHICH ARRAY THE USER IS IN
?>
如何在我的班级中成功运行 in_array?
【问题讨论】:
-
我添加了全局 $commDocsAdminExecutiveUsers;和全局 $commDocsAdminUsers;在我的 PHP 之上,仍然得到相同的结果。
-
@EdCottrell 当然,这些问题(事后看来)有相同的答案,但显然问题不是“完全重复”。除非我扭曲了空间和时间。不过还是谢谢。
-
@tamak 是的,它确实是完全相同的副本。它具有相同的根本原因和相同的答案,因为它反映了对变量范围的相同误解。
-
@EdCottrell 感谢 Ed
标签: php