【问题标题】:How to export array from php file to another php file如何将数组从php文件导出到另一个php文件
【发布时间】:2018-10-14 23:05:15
【问题描述】:

在一个文件中我有这样的东西:

    $result = mysqli_query($con, "SELECT * FROM users WHERE id_province = '".$province_id."' AND id_city = '".$city_id."' AND age >= '".$age1."' AND
    age <= '".$age2."' AND id_rank = '".$rank_id."' AND id_position = '".$position_id."';");

    while ($row = mysql_fetch_array($result)) {
        $array[] = $row;
    }

我想在另一个 文件中使用$array。我该怎么做?

【问题讨论】:

标签: php php


【解决方案1】:

所以......“出口”是错误的术语,您正在查看的是变量范围

用最简单的术语来说——在函数外声明的东西是“全局的”,而在函数内声明的东西是私有的

您想将数组从一个文件传递到另一个文件吗?如果你有 3 个文件(main、include_num1 和 include_num2),这很简单;

主要的;

<?php
require_once 'include_num1.php';
require_once 'include_num2.php';
?>

include_num1;

<?php
$myarray = array("a", "b", "c")
?>

include_num2;

<?php
var_dump($myarray);
?>

这会产生类似的东西;

myarray = (array)
    string 0 : a(1)
    string 1 : b(1)
    string 2 : c(1)

这是因为在此示例中,数组是在全局范围内声明的,如果您以相反的方式执行 require - 这将在 var 转储时出错,$myarray 不存在

您可以通过在include_num1 中包含include_num2 来跳过“主要”

如果要在函数内部使用全局变量,将函数声明为正常,并使用global available;

<?php
$myvar = "A variable";

function myFunction()
{
    if (isset($myvar)) print $myvar; // Will do nothing
    global $myvar;
    if (isset($myvar)) print $myvar; // Will Print "A variable"
}
?>

【讨论】:

    【解决方案2】:

    您可以将数组保存在数据库、文件、cookie、会话中......

    这取决于您想要做什么以及必要的安全级别。

    最简单的方法是:

    //At the top of your page
    @session_start();
    
    //This line goes after you get all data you want inside your array
    $_SESSION['mySession'] = $array;
    

    在另一个页面中:

    //At the top of your page
    @session_start();
    
    //To recover you array:
    $array = $_SESSION['mySession'];
    

    不是最好的选择,但它有效。

    【讨论】:

      【解决方案3】:

      当尝试在多个文件之间传递时,您可以使用类而不是脚本。这有助于更好地维护代码。

      假设第二个文件是 SecondFile.class。我可以实例化它,然后将数组作为参数传递。

      $secondFile = new SecondFile;
      $secondFile->someClassMethod($array);
      

      或者,如果您不需要将第二个文件用于其他任何内容,请使用更短的语法:

      (new SecondFile)->someClassMethod($array);
      

      【讨论】:

        【解决方案4】:

        您可以使用会话

        session_start();    
        $result = mysqli_query($con, "SELECT * FROM users WHERE id_province = '" . $province_id . "' AND id_city = '" . $city_id . "' AND age >= '" . $age1 . "' AND
                    age <= '" . $age2 . "' AND id_rank = '" . $rank_id . "' AND id_position = '" . $position_id . "';");
        
        while ($row = mysql_fetch_array($result)) {
            $array[] = $row;
        }
        $_SESSION['array'] = $array;
        

        在第二个文件中你可以使用下面的代码

        @session_start();
        $array = $_SESSION['array'];
        

        【讨论】:

        • 好的,在第二个文件中我将使用 $array = $_SESSION['array'];你能告诉我这张表是怎么读的吗?
        • $_SESSION 不是最好的,因为它会一直存在 - 最好使用请求参数之一,例如 $_POST、$_GET、$_REQUEST,因为这些在负载之间很清楚。如果您将其保留并每次检查(不更改),它将始终相同,这可能会导致潜在问题,除了它会占用内存并且与会话无关(尤其是每次运行它时)附加到 $_SESSION 变量而不清除 $array var)
        • 他可以通过 session 传递变量,然后从 session POST 中取消设置,get 不是好的解决方案,因为 $array 可以达到 post 的最大限制并 get !!
        • @tobyku 没有问你问题
        • @tobyku - 你的错误是因为使用mysqli_query,然后使用mysql_fetch_array,在这两个实例中都使用mysqli_函数
        猜你喜欢
        • 1970-01-01
        • 2013-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多