2

配列を返す関数があります。その後、最初に使用する別の関数を作成します。これは正常に動作します。 でテストしましvar_dump()たが、他のページで 2 番目の関数を呼び出すと、NULL戻ってきましたか? これが私のコードです:

第1機能

function get_blogs()
{
  global $kapcsolat;
  $sql = "SELECT * FROM blog WHERE b_aktiv ='1' ORDER BY b_datum DESC";
  if($eredmeny = mysqli_query($kapcsolat,$sql))
  {
    if($db = mysqli_num_rows($eredmeny)>0)
    {
      while($sor = mysqli_fetch_assoc($eredmeny))
      {
        $tomb[] = $sor;
      }
      mysqli_free_result($eredmeny);
      return $tomb;  
    }
    else
    {
      $tomb[] = null;
      return $tomb;
    }
  }
  else
  {
    echo'nem sikerült csatlakozni';
  }
}

2つ目はこちら

function public_blog()
{
  $blogok = get_blogs();
}

そして、これは2番目の関数を含める方法のコードです:

include 'admin/functions.php';
public_blog();

しかし、public_blog を呼び出すと、$blogok 変数を使用できません。つまり、NULLを返します。なんで?

4

2 に答える 2

3

2番目の関数は何も返さず、グローバル変数の値を設定しません(そして$blogok、それが作成された関数に対してローカルです)。したがって、実際には役に立ちません。おそらくあなたはこれを意味しました:

function public_blog()
{
  return get_blogs();
}

... 
$blogok = public_blog();
doSomethingElseWith($blogok);

それでも、結果を使用して何かを行うつもりでない限り、この中間関数の目的はほとんどわかりませんget_blogs()

補足として、これの目的は何ですか?

$tomb[] = null;
return $tomb;

ここでは、単一要素の配列が関数から返されます (行が見つからない場合)。ただし、この結果は空とは見なされず、コードの他の部分にバグが発生する可能性があります。使い方に応じて、これを$tomb = array();またはのいずれかに置き換えた方がよいでしょう。$tomb = null

于 2013-06-01T10:36:30.947 に答える
0

最初の関数はreturn、2 番目の関数にいくつかのデータを ing しています。

2 番目の関数では、最初の関数から返されたデータを変数に代入しているだけで、他には何も起こっていません。

したがって、必要なのは別のreturnステートメントです。

function public_blog()
{
  $blogok = get_blogs();
  return $blogok;
}
于 2013-06-01T10:37:25.223 に答える