2012-01-19 12 views
0

I表4 、簡略化のために、私はTABLE1、table2の、表3それらを呼び出すし、4つのテーブルを持つデータベースをしましたPHP:2D配列を特定の順序で特定の条件で表示しますか?

各テーブルには、すべての共有を異なる情報を持っていますが、彼ら一意のID、、sessionid

PHP配列のPHPMyAdminで4つのテーブルをすべてエクスポートしました。これにより、mydomain.phpというファイルが作成されます。このインサイド

、データ構造は、次のような次のとおりです。

$table1 = array(
    array('id'=>1,'sessionid'=>'12','field1_1'=>'data','field2_1'=>'data','field3_1'=>'data, 'done'=>1), 
    array('id'=>2,'sessionid'=>'13','field1_1'=>'data','field2_1'=>'data','field3_1'=>'data, 'done'=>0) 
); 

$table2 = array(
    array('id'=>4,'sessionid'=>'12','field1_2'=>'data','field2_2'=>'data','field3_2'=>'data), 
    array('id'=>6,'sessionid'=>'13','field1_2'=>'data','field2_2'=>'data','field3_2'=>'data) 
); 

$table3 = array(
    array('id'=>2,'sessionid'=>'12','field1_3'=>'data','field2_3'=>'data','field3_3'=>'data), 
    array('id'=>5,'sessionid'=>'13','field1_3'=>'data','field2_3'=>'data','field3_3'=>'data) 
); 

$table4 = array(
    array('id'=>6,'sessionid'=>'12','field1_4'=>'data','field2_4'=>'data','field_43'=>'data), 
    array('id'=>1,'sessionid'=>'13','field1_4'=>'data','field2_4'=>'data','field3_4'=>'data) 
); 

私の願いは、(あなたが見ることができるように、各テーブルのidのは異なります)、そのセッションIDに応じてそれらを表示することであり、私が欲しいです最初のテーブルの 'done'フィールドが1または0に設定されているかどうかを確認し、空のフィールドまたは「NULL」フィールドをスキップします。

私はお互いにネストされたforeachループのようないくつかの異なる方法を試しましたが、うまくいかないようです。

これを解決する方法についてのご支援をお願いいたします。

誠実
- Mestika

答えて

3

なぜあなたはSQLを使用していませんか?この言語はこのようなことをするように設計されています。

  • 4つのテーブルの内容をマージするには、JOIN文を使用します。
  • SELECTステートメントを使用して[完了]フィールドを取得します。
  • WHEREを使用して、空の文字列とNULL値をフィルタリングします。

最後に、phpMyAdminを使用してデータをエクスポートする代わりに、直接、テーブル値を取得するためにPHPとmySQL機能を使用します。

サンプルSQL文:

SELECT t1.sessionid, t1.done 
FROM table1 AS t1 
JOIN table2 AS t2 ON t1.sessionid = t2.sessionid 
JOIN table3 AS t3 ON t2.sessionid = t3.sessionid 
JOIN table4 AS t4 ON t3.sessionid = t4.sessionid 
WHERE t1.done IS NOT NULL 

PHPリソース:そのがTではない

0

彼の最も効率的なソリューションが、それはまっすぐ進む..です

foreach ($table1 as $data) { 
    if ($data['done']===0 || $data['done']===1) { 
     print_r($data); 
     echo "Data table 2:"; 
     foreach ($table2 as $data2) { 
     if ($data2['sessionid']===$data['sessionid']){ 
      print_r($data2); 
     } 
     } 
     echo "Data table 3:"; 
     foreach ($table3 as $data3) { 
     if ($data3['sessionid']===$data['sessionid']){ 
      print_r($data3); 
     } 
     } 
     echo "Data table 4:"; 
     foreach ($table4 as $data4) { 
     if ($data3['sessionid']===$data['sessionid']){ 
      print_r($data4); 
     } 
     } 
    } 
} 

私はそれは私の単純な、それを書き留めたテストしていない、何のタイプミスがない願っています。..

関連する問題