-2

印刷配列が機能していません。配列に追加する直前に $articleID をエコーアウトするため、変数は null などではありません。

次に、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);
4

6 に答える 6

1

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

于 2013-10-03T10:37:40.307 に答える
1

値を試してエコーする前に、関数を実行する必要があります

編集:に戻したように-グローバル変数を使用するか、関数で値を返す必要もあります

于 2013-10-03T10:37:51.340 に答える
1

あなたは2つのことを見逃しています:

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);
于 2013-10-03T10:37:59.713 に答える
0

最初に関数を呼び出す必要があるため、次のようにします。

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

(未テスト)

于 2013-10-03T10:38:10.427 に答える
0

これを試して:

$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);
于 2013-10-03T10:39:53.107 に答える
0

配列は関数のスコープ内で「埋められる」ため、その値はグローバルスコープでは使用できません。

変数をグローバル化することができます:

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 を使用するなどの代替手段があります。しかし、私はあなたが最も簡単な解決策を使用することをやめたと思います.

于 2013-10-03T10:40:35.410 に答える