【问题标题】:PHP array not printingPHP数组不打印
【发布时间】:2013-10-03 10:35:54
【问题描述】:

我的打印阵列不工作。它在添加到数组之前回显 $articleID,因此变量不为空或任何东西。

然后我 print_r($magIDArray) 它只是回显'Array()';有人可以帮忙吗?

编辑:我已经调用了该函数,否则它不会回显函数中的变量 - 它不会回显 $articleID,但它已经完成了

$sql = mysql_query("SELECT * FROM master_k2_categories WHERE parent = '$catid' ORDER 
BY id DESC");
while($row = mysql_fetch_array($sql)){
    $id = $row["id"];
    $name = $row["name"];
    getMagArticleID($id); 
}

$magIDArray = array();
function getMagArticleID($id){
    $magID = $id;
    $sqlID = mysql_query("SELECT * FROM master_k2_items WHERE catid = '$magID' ORDER BY id DESC");
    while($row = mysql_fetch_array($sqlID)){
        $articleID = $row["id"];
        echo '<br>', $articleID;
        $magIDArray[] = $articleID;
    }
}
print_r($magIDArray);

【问题讨论】:

  • $magIDArray = array(); 放在$sql = ... 行之前,然后跟随undone's answer

标签: php arrays variables


【解决方案1】:

你错过了两件事:

1) 忘记调用函数了。

2) 忘记返回函数值。

更新代码:

<?php    
function getMagArticleID($id){
 $magIDArray = array();
    $magID = $id;
    $sqlID = mysql_query("SELECT * FROM master_k2_items WHERE catid = '$magID' ORDER BY id DESC");
    while($row = mysql_fetch_array($sqlID)){
        $articleID = $row["id"];
        echo '<br>', $articleID;
        $magIDArray[] = $articleID;
    }
        return $magIDArray;
}

$magIDArray = getMagArticleID($id);
print_r($magIDArray);

【讨论】:

  • 谢谢,我没有得到负两分,因为人们没有读到我说我调用函数的地方
【解决方案2】:

你需要使用global关键字:

   $magIDArray = array();
    function getMagArticleID($id){
    global $magIDArray ;
    $magID = $id;
        $sqlID = mysql_query("SELECT * FROM master_k2_items WHERE catid = '$magID' ORDER BY id DESC");
        while($row = mysql_fetch_array($sqlID)){
            $articleID = $row["id"];
            echo '<br>', $articleID;
            $magIDArray[] = $articleID;
        }
    }
    getMagArticleID($id);
    print_r($magIDArray);

看看变量作用域:http://php.net/manual/en/language.variables.scope.php

【讨论】:

  • 你需要先运行函数!
【解决方案3】:

您需要在尝试回显值之前运行您的函数

编辑:如undone said - 您还必须使用全局变量或在函数中返回值

【讨论】:

  • 我已经先调用了该函数,否则它不会回显所有数字
  • 哪些数字?在问题中包含调用函数的行
【解决方案4】:

你需要先调用该函数,所以我会这样做:

$magIDArray = array();
function getMagArticleID($id){
    $magID = $id;
    $sqlID = mysql_query("SELECT * FROM master_k2_items WHERE catid = '$magID' ORDER BY id DESC");
    while($row = mysql_fetch_array($sqlID)){
        $articleID = $row["id"];
        echo '<br>', $articleID;
        $magIDArray[] = $articleID;
    }

    return $magIDArray;

}
$magIDfunction = getMagArticleID($id);
print_r($magIDfunction);

(未测试)

【讨论】:

  • 你必须使用关键字或返回一些东西!
【解决方案5】:

试试这个:

$magIDArray = array();
function getMagArticleID($id){
    global $magIDArray;
    $magID = $id;
    $sqlID = mysql_query("SELECT * FROM master_k2_items WHERE catid = '$magID' ORDER BY id DESC");
    while($row = mysql_fetch_array($sqlID)){
        $articleID = $row["id"];
        echo '<br>', $articleID;
        $magIDArray[] = $articleID;
    }
    return $magIDArray;
}
getMagArticleID(*parameter*);
print_r($magIDArray);

【讨论】:

    【解决方案6】:

    您的数组在函数范围内被“填充”,因此它的值在全局范围内不可用。

    您可以将 var 全球化:

    function getMagArticleID($id){
        global  $magIDArray;
        $magID = $id;
        $sqlID = mysql_query("SELECT * FROM master_k2_items WHERE catid = '$magID' ORDER BY id DESC");
        while($row = mysql_fetch_array($sqlID)){
            $articleID = $row["id"];
            echo '<br>', $articleID;
            $magIDArray[] = $articleID;
        }
    }
    

    或者您可以将数组作为函数的结果返回

    function getMagArticleID($id){
        $magIDArray=Array();
        $magID = $id;
        $sqlID = mysql_query("SELECT * FROM master_k2_items WHERE catid = '$magID' ORDER BY id DESC");
        while($row = mysql_fetch_array($sqlID)){
            $articleID = $row["id"];
            echo '<br>', $articleID;
            $magIDArray[] = $articleID;
        }
        return $magIDArray;
    }
    $magIDArray=getMagArticleID($id);
    

    也就是说,在其他替代方法中,例如通过引用传递数组或将其全部包装在 $madIDArray 是私有类 var 的类中,或将 $madIDArray 声明为对象并让 PDO 获取绑定到对象的结果.但我相信你会使用最简单的解决方案。

    【讨论】:

      猜你喜欢
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 2018-07-04
      • 2019-03-17
      • 1970-01-01
      相关资源
      最近更新 更多