【问题标题】:Why is this array not recognized as an array in my PHP class? [duplicate]为什么这个数组在我的 PHP 类中没有被识别为数组? [复制]
【发布时间】: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


【解决方案1】:

$commDocsAdminUsers$commDocsAdminExecutiveUsers 设置为全局变量或类的属性。

class userLogin {

    public static $commDocsAdminUsers = array("kaisersolze", "bennyblanco", "carlitobrigante", "ashylarry", "claytonbigsby");
    public static $commDocsAdminExecutiveUsers = array("waltjr", "skylerwhite", "tuco", "skinnypete", "walterwhite");


    // ALLOWS US TO CHECK THE ACCESS LEVEL OF THE USER... FIND WHICH ARRAY USER IS IN
    function check_access() {
        if (in_array("kaisersolze", self::commDocsAdminUsers)){
          return "Match found in comDocsUsers Array";
        }
        else if (in_array($this->name, self::commDocsAdminExecutiveUsers)){
              return "Match found in comDocsUsers Array";
        }
        else {
              return "No Access Allowed";  // USER NOT FOUND IN EITHER ARRAY
            }
        }
    } 

【讨论】:

  • 这行得通,但我必须使用 $ 符号,如:self::$commDocsAdminExecutiveUsers
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 1970-01-01
  • 2021-02-22
  • 2013-06-28
  • 2022-07-11
  • 1970-01-01
相关资源
最近更新 更多