【问题标题】:PHP - Use array outside class?PHP - 在课堂外使用数组?
【发布时间】:2012-08-01 01:23:27
【问题描述】:

我想在它的类之外使用一个数组,但我不太确定如何做到这一点。

班级。

class Classname{
public function Functionname(){
$sql = 'SELECT * FROM...';
$result = mysql_query($sql);

$sgArray[] = array();
while($row = mysql_fetch_assoc($result)){
   return $sgArray[] = $row['a'];
}

我需要数组的代码(类外)。

$var = 'somevalue';
$Array = ??? 
if(in_array($var, $Array)) {
    //enter code here
}

希望有人可以帮助我,因为我对 OOP 还不太熟悉。

【问题讨论】:

  • 你想做什么?使用你在函数中创建的$sgArray
  • 不要在return 循环内使用while!如果您有多行,它将在第一次迭代时返回。而是在循环结束后return $Array

标签: php arrays class function


【解决方案1】:

首先,你需要创建一个实例变量:

$obj = 新类名(); //$obj 现在是你的实例变量

//现在使用您创建的实例变量从其他类获取方法:
$array = $obj->函数名();

【讨论】:

  • 请给你的答案添加一些解释!
【解决方案2】:

我建议您使用getters and setters 来访问类中的值。这还有一个额外的好处,就是更容易在类中添加新功能,并且仍然可以从 getter 中获得相同的东西。

class Classname
{
    private $myArray = array();

    public function getMyArray()
    {
        return $this->myarray();
    }

    public function Functionname()
    {
        $sql = 'mysql query';
        $result = mysql_query($sql);    

        while($row = mysql_fetch_assoc($result))
        {
           $this->myArray[] = $row;
        }

        return $this;

    }
}

以后可以打电话

$myClass = new Classname();   

if( in_array('foo', $myClass->Functionname()->getMyArray() ))
{
    echo 'BAR!';
}

【讨论】:

    【解决方案3】:

    创建公共财产

    类名{ 公共 $array;

    public function Functionname(){
    $sql = 'mysql query';
    $result = mysql_query($sql);
    
    $sgArray[] = array();
    while($row = mysql_fetch_assoc($result)){
    $this->array[] = $row;
    }
    return $this->array;
    

    【讨论】:

    • 出现错误:添加应该是$this->array[] 而不是$this->array,因为它每次循环都会覆盖数组
    • 是的,写得很快,但如果你看他的代码,它会在循环中返回,所以它也只返回一条记录,呵呵。
    【解决方案4】:
    class ClassName {
        public function FunctionName() {
            $sql = "SELECT * FROM ...";
            $result = mysql_query($sql);
    
            $sgArray = array();
    
            while($row = mysql_fetch_assoc($result)) {
                $sgArray[] = $row;
            }
    
            return $sgArray;
        }
    }
    
    $obj = new ClassName();
    $var = "some value ";
    $arr = $obj->FunctionName();
    
    if (in_array($var, $arr)) {
        // do stuff
    }
    

    编辑:这假定 $sgArray 只是一个临时值,而不是类的一部分。

    【讨论】:

      【解决方案5】:

      为您的类创建一个对象并调用该函数。

      Classname $obj;
      $Array = $obj->functionname();
      

      并且不要在循环内返回。

      【讨论】:

        【解决方案6】:

        因为functionname是公开的,只要让它(或类似的方法)返回你想要的数据...

        class Classname{
            public function GetResultSet(){
                $sql = 'mysql query';
                return mysql_fetch_assoc(mysql_query($sql));
            }
        }
        

        然后在课堂之外......

        $ResultSet = $Classname->GetResultSet();
        
        while($row = $ResultSet){
           return $Array[] = $row;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-24
          • 1970-01-01
          • 2019-05-13
          • 2015-03-31
          相关资源
          最近更新 更多