2009-07-06 6 views
0

私は、彼らが存在する時点までの関数から値のセットを返すようにしたい.... ....PHP - 例えばファンクションの戻り値を動的

function abc($i="3"){ 

    for($a=1;$a<=$i;$a++) { 
     $name='t'.$i; 
     $$name = "ae".$a; 
    } 
    //now i am returning values 
    return array($t1,$t2,$t3,$t4,$t5,$t6,$t7,$t8,$t9,$t10); 
    //but i only want to return $t1,$t2,$t3 depending on $i 
} 

おかげで....

は、あなたがより良い方法でそれを理解できるように、私はまた、ループ内の配列を作成しています が、私は元のコードを貼り付けます@therefromhere

function extracting_comments($table, $fields,$condition,$order,$limit){ 
     $query="SELECT ".$fields." 
       FROM ".$table." 
       WHERE ".$condition." 
       ORDER BY ".$order." 
       LIMIT ".$limit." "; 
     if($stmt = $this->conn->prepare($query)) { 
      $stmt->execute(); 
      $row = array_pad(array(), $stmt->field_count, ''); 
      $params = array(); 
       foreach($row as $k=>$v) { 
        $params[] = &$row[$k]; 
        echo $params[0]; 
       } 
      call_user_func_array(array($stmt,'bind_result'),$params); 
      $i=0; 
      while($stmt->fetch()) { 
      $i++; 
      $name='t'.$i; 
      $$name = array(); 
      foreach ($row as $b=>$elem) { 
      $atul[$b]=$row[$b]; 
      } 
      $$name=$atul; 
      } 
      return array($t1,$t2,$t3,$t4,$t5,$t6,$t7,$t8,$t9,$t10); 
      $stmt->close(); 
     } 

    } 

今だけ自分のしていますデータの5行ない点助けてください$ t6において、$ t7のは、$ T8、$のT9、$ t10の を返すと、私はそれを修正したい、と私は

$extract=extracting_comments($table, $fields,$condition,$order,$limit); 

を使用して関数を呼び出していますが、彼らはありませんので。あなたの質問を編集したAN私達にあなたの実際の問題を明らかにした後、

function abc($i=3) { 
    $array = array(); 
    for ($a=1; $a<=$i; $a++) { 
     $array[] = "ae".$a; 
    } 
    return $array; 
} 

ここに私のページをご覧ください:

答えて

1

私はこれがあなたを助けると信じています。あなたは副作用やバグの多い非常に複雑なコードを持っているので、それを再作成することを検討することをお勧めします。また、リターン後に文を置くことは、呼び出されないので何の効果もありません。

function extracting_comments($table, $fields,$condition,$order,$limit){ 
       $query="SELECT ".$fields." 
           FROM ".$table." 
           WHERE ".$condition." 
           ORDER BY ".$order." 
           LIMIT ".$limit." "; 
       if($stmt = $this->conn->prepare($query)) { 
         $stmt->execute(); 
         $row = array_pad(array(), $stmt->field_count, ''); 
         $params = array(); 
           foreach($row as $k=>$v) { 
            $params[] = &$row[$k]; 
            echo $params[0]; 
           } 
         call_user_func_array(array($stmt,'bind_result'),$params); 
         $i=0; 
         $result = array(); 
         while($stmt->fetch()) { 
         $i++; 
         foreach ($row as $b=>$elem) { 
         $atul[$b]=$row[$b]; 
         } 
         $result[]=$atul; 
         } 
         $stmt->close(); 
         return $result; 
       } 

     } 
+0

ありがとうございました...... artem barger 問題が解決しました – halocursed

+0

ちょっとArtem ....今すぐ私のコードを変更しました。あなたの答えに今すぐバグフリーですか、またはこれを行うのが良いです...もしそうなら正しい方向に私を指してください...私はあなたがこの機能で何をしようとしているのか知っていれば幸いです – halocursed

+0

正直言って、私はあなたがここで何をしようとしているかを完全には確信していません。しかし、冗長なコードをたくさん作成したようです。おそらく、ここで使用している構造をよりよく理解するために、http://php.netサイトを読んで時間を費やす価値があります。 –

10

ちょうどあなたのforループ内で配列を作成..thanks roposal:あなたは変数が(存在するかどうかを確認したい場合は

function abc($i="3") { 
    $myArray = array(); 
    for($a=1;$a<=$i;$a++) { 
    $myArray[] = "ae" . $a; // add new values to the end of the array 
    } 

    return $myArray; 
} 

function extracting_comments($table, $fields, $condition, $order, $limit) { 
    $retVal = array(); 
    $query = "SELECT ".$fields." 
     FROM ".$table." 
     WHERE ".$condition." 
     ORDER BY ".$order." 
     LIMIT ".$limit." "; 
    if ($stmt = $this->conn->prepare($query)) { 
     $stmt->execute(); 
     $row = array_pad(array(), $stmt->field_count, ''); 
     call_user_func_array(array($stmt, 'bind_result'), $row); 
     while ($stmt->fetch()) { 
      $retVal[] = $row; 
     } 
     $stmt->close(); 
     return $retVal; 
    } 
} 
+0

実際に変数が存在するかどうか知りたいのですか? – Sampson

+0

しかし、彼のコードのコメントは "*だが$ i1に依存して$ t1、$ t2、$ t3を返すだけだ。これらの変数は 'for'ループで作成されたものなので、代わりにその変数を格納することができます。 – Gumbo

+0

彼は私のことを混乱させた "彼らが存在する点"のコメントでした。おそらく、彼は19回の反復を渡したいと思っていたかもしれませんが、実際に存在する変数に結びついている限り、できるだけ遠くに行きたいと思っています。したがって、$ a1〜$ a12が存在する場合、ループには最大$ a12しか含まれません。 – Sampson

0

あなたが一時的な変数を必要としない、あなたが一緒に行くように、アレイを構築するためにきれいになるだろうnullでない場合)、isset()を使用します。

+0

'$ myArray()'の括弧を削除します。 – Gumbo

+0

おっと、ありがとう。 –

関連する問題