Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP,如何在方法之间传递变量?_Php_Class_Methods - Fatal编程技术网

PHP,如何在方法之间传递变量?

PHP,如何在方法之间传递变量?,php,class,methods,Php,Class,Methods,我试图将一个变量从一个方法传递到另一个方法 我从事件表中获取日期,以便在另一个方法中构建动态查询 class Player extends Database { private $start_date; private $end_date; private $sumCase; protected function getEvents() { $sql = "SELECT * FROM `events`"; $stmt

我试图将一个变量从一个方法传递到另一个方法

我从事件表中获取日期,以便在另一个方法中构建动态查询

class Player extends Database {
    private $start_date;
    private $end_date;
    private $sumCase;

protected function getEvents() {
        $sql = "SELECT * FROM `events`";
        $stmt = $this->connect()->prepare($sql);
        $stmt->execute();
        $results = $stmt->fetchAll();

        $event_arr = array();
        foreach($results as $result) {
            $event_name = $result['event_name'];
            $this->start_date = $result['start_date'];
            $this->end_date = $result['end_date'];

            $this->sumCase[] = "SUM(CASE WHEN date BETWEEN $this->start_date AND $this->end_date THEN 1 ELSE 0 END) '$event_name'";
            $dateBetween[] = "date BETWEEN $this->start_date AND $this->end_date";
            array_push($event_arr, array(
                "name" => $result['event_name'],
                "start" => $result['start_date'],
                "end" => $result['end_date'],
            ));
        }
        return print_r($this->sumCase);
    }
这将毫无问题地返回我的sumCase数组,我现在尝试用另一种方法访问此sumCase数组,以便构建查询:

protected function getPlayerEvents() {
        $sql = "SELECT count(chalID) as total, ";
        $sql .=' '.implode(', ', $this->sumCase); 
        $sql .="from (SELECT * FROM times where ("; //ignore this
        $sql .="date BETWEEN 159310659 AND 1593538594  OR date BETWEEN 1693538594 AND 1793538594"; //ignore this
        $sql .=") AND plaID = 1 group by chalID) A"; //ignore this

        $stmt = $this->connect()->prepare($sql);
        $stmt->execute();
        $results = $stmt->fetchAll();
        echo $this->sumCase; //returns null, how do I pass variables between methods?
    }

当我在这个方法中回显我的sumCase数组时,它返回null。如何从getEvents方法访问sumCase数组的值?

我理解您的问题的方式是,您需要访问另一个方法中声明的方法中的变量。为了传递变量,您需要首先全局声明$,然后在函数内部访问它。 例如:


我理解您的问题的方式是,您需要访问另一个方法中声明的方法中的变量。为了传递变量,您需要首先全局声明$,然后在函数内部访问它。 例如:


若函数getEvents并没有首先被调用,或者它并没有被调用到对象的同一个实例,那个么它将返回null

<?php

use directory_with_classes\Player;

$player = new Player();
$player->getEvents();
$player->getPlayerEvents();

?>

若函数getEvents未首先调用,或者未调用到对象的同一实例,则返回null

<?php

use directory_with_classes\Player;

$player = new Player();
$player->getEvents();
$player->getPlayerEvents();

?>


当您使用方括号为其赋值时,是否打算将
$sumCase
放入一个数组中?这会影响你的回应能力。请提取一个答案,并将其包含在你的问题中。还请注意,不清楚为什么要将其存储在成员中并返回其内容,格式为
print\r()
。作为这里的新用户,请同时读取和。您是否在同一对象上下文中使用$sumCase变量来调用这两个函数?@MartinZeitler ya,提问者尚未清除其查询中的所有内容。无需
返回任何内容,在使用属性时。当您使用方括号为其赋值时,是否打算将
$sumCase
放入数组中?这会影响你的回应能力。请提取一个答案,并将其包含在你的问题中。还请注意,不清楚为什么要将其存储在成员中并返回其内容,格式为
print\r()
。作为这里的新用户,请同时读取和。您是否在同一对象上下文中使用$sumCase变量来调用这两个函数?@MartinZeitler ya,提问者尚未清除其查询中的所有内容。使用属性时,无需
返回任何内容。抱歉,这是全局范围内的顺序代码,虽然主题是OOP。抱歉,但这是全局范围内的顺序代码,而主题是OOP。