猿问

将数组从一个函数传递到另一个函数 - 一个是空的,另一个不是?

我对 OOP php 还很陌生,但多年来一直在编写程序代码。这是一种完全不同的编码方式(至少对我而言),所以我无法理解这一点:


基本上,我需要提取 MySQL 数据并将其显示在表格中。现在,我有一个类,DBQuery它有两个函数——一个用于查询数据并将其存储在一个数组中,另一个用于使用数组中的内容呈现表格。


如果我var_dump()从查询类中获取数组,我应该从数据库中获取内容。但如果我在displayTable()函数中做同样的事情,它是空的。但是,我在两个函数中都创建了一个很好的$testvar数组var_dump(),所以我在处理$data数组的方式上可能有错误,导致它在某些时候自我破坏,或者我没有以正确的方式传递它。


我已经为此苦苦挣扎了 3 天,而且我确信我在某处遗漏了一个重要的细节——只是无法确定它。


我的 DBQuery 类:


class DBQuery extends dbc {


    private $query;

    private $testvar = array('testing one','testing two','testing three');

    private $data = array();


    public function __construct($sqlQuery) {



        $testvar = $this->testvar;

        $data = $this->data;


        $this->query = $sqlQuery;


        $result = $this->connect()->query($sqlQuery) or die('Database error');

        $numRows = $result->num_rows;

        if ($numRows > 0) {

            while ($row = $result->fetch_assoc()) {

                $data[] = $row;

            }


            var_dump($data); // ***** THIS HAS CONTENT *****


        }


    }


    public function displayTable() {


        var_dump($this->testvar); // ***** THIS HAS CONTENT *****

        var_dump($this->data);    // ***** THIS IS EMPTY *****


    }

}

而我的观点:


<?php

    $query = new DBQuery("SELECT * FROM users");

    $query->displayTable();

?>

我在这里做错了什么?:)


炎炎设计
浏览 103回答 1
1回答

慕的地10843

来自PHP 的数组文档:数组赋值总是涉及值复制。所以这一行正在制作数组的副本,而不是创建“指针”或“引用”:$data&nbsp;=&nbsp;$this->data;在您的__construct中,更改每次出现的$datato&nbsp;$this->data,它将按您的意愿工作。或者你可以这样做:$data&nbsp;=&nbsp;&$this->data;这将创建一个参考,但只会使情况更加混乱。
随时随地看视频慕课网APP
我要回答