PHP: отображать 2D-массивы в определенном порядке и с определенными условиями? - PullRequest
0 голосов
/ 20 января 2012

У меня есть база данных, в которой есть четыре таблицы, для простоты я буду называть их table1 , table2 , table3 , Таблица 4

Каждая таблица имеет различную информацию, но все они имеют уникальный идентификатор, 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)
);

Мое желание - отображать их в соответствии с их идентификатором сеанса (как вы можете видеть, идентификаторы каждой таблицы могут отличаться), и я хочу проверить, установлено ли для поля 'done' в первой таблице значение 1 или 0 и пропустите поля, которые пусты или содержат «NULL» в них.

Я пробовал несколько разных методов, такие как циклы foreach, вложенные друг в друга, но я, кажется, не совсем работал.

Надеюсь на вашу помощь, как решить эту проблему.

Искренняя
- Местика

Ответы [ 2 ]

3 голосов
/ 20 января 2012

Почему вы не используете SQL?Этот язык предназначен для таких вещей.

  • Используйте оператор JOIN для объединения содержимого четырех таблиц.
  • Используйте инструкцию SELECT для извлечения поля [done].
  • Используйте 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 голосов
/ 20 января 2012

Это не самое эффективное решение, но оно прямо вперед.

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

Я не проверял это, я просто записал это, надеюсь, нет опечаток ..

...