为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
炎炎设计 2022-07-16 16:22:18
我对 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();?>我在这里做错了什么?:)
查看完整描述

1 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

来自PHP 的数组文档

数组赋值总是涉及值复制。

所以这一行正在制作数组的副本,而不是创建“指针”或“引用”:

$data = $this->data;

在您的__construct中,更改每次出现的$datato $this->data,它将按您的意愿工作。或者你可以这样做:

$data = &$this->data;

创建一个参考,但只会使情况更加混乱。


查看完整回答
反对 回复 2022-07-16
  • 1 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信