PHP 数组未打印


PHP array not printing

我的打印数组不起作用。 它会在添加到数组之前回显出$articleID,因此变量不是 null 或任何内容。

然后我print_r($magIDArray),它只是回声"数组( )";谁能帮忙?

编辑:我已经调用了该函数,否则它不会回显函数中的变量 - 它会回显$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);

你错过了两件事:

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);

你需要使用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

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

编辑:正如未完成的那样 - 您还必须使用全局变量或在函数中返回值

您需要先调用该函数,因此我将执行以下操作:

$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);

(未经测试)

试试这个:

$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);

数组在函数范围内被"填充",因此其值在全局范围内不可用。

您可以全球化变量:

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 来获取绑定到对象的结果。但我相信你会使用最简单的解决方案。