2012-01-19 34 views
0

我已經有四桌,爲簡單起見數據庫,我會打電話給他們表1表2表3表4PHP:以特定順序和特定條件顯示二維數組?

每個表都有不同的信息,但他們都有一個唯一的ID,sessionid

我已經通過PHPMyAdmin在PHP數組中導出所有四個表。這給了我一個名爲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的可能有所不同),以顯示他們,我想檢查第一個表中的「完成」字段是否設置爲1或0,並跳過其中爲空或具有「NULL」的字段。

我試過一些不同的方法,這種foreach循環嵌套在對方,但我似乎不工作。

希望你的幫助如何解決這個問題。

真誠
- Mestika

回答

3

你爲什麼不使用SQL?這種語言旨在做這樣的事情。

  • 使用JOIN語句合併四個表的內容。
  • 使用SELECT語句檢索字段[完成]。
  • 使用WHERE過濾空字符串和NULL值。

最後,使用PHP和mySQL功能直接檢索表值,而不是使用phpMyAdmin導出數據。

樣的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資源:

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

我沒有測試它,我簡單的把它寫下來,希望不出現錯別字..