PHP:以特定顺序和特定条件显示2D数组?
我有一个数据库,它有四个表,为了简单起见,我将它们称为表1,表2,表3,表4 每个表都有不同的信息,但它们都共享一个唯一的id,sessionid 我已经通过PHP数组中的PHPMyAdmin导出了所有四个表。这给了我一个名为mydomain.php的文件 其中,数据结构如下所示:PHP:以特定顺序和特定条件显示2D数组?,php,arrays,multidimensional-array,foreach,nested-loops,Php,Arrays,Multidimensional Array,Foreach,Nested Loops,我有一个数据库,它有四个表,为了简单起见,我将它们称为表1,表2,表3,表4 每个表都有不同的信息,但它们都共享一个唯一的id,sessionid 我已经通过PHP数组中的PHPMyAdmin导出了所有四个表。这给了我一个名为mydomain.php的文件 其中,数据结构如下所示: $table1 = array( array('id'=>1,'sessionid'=>'12','field1_1'=>'data','field2_1'=>'data','field3
$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为什么不使用SQL?这种语言就是为了做这样的事情而设计的
- 使用JOIN语句合并四个表的内容
- 使用SELECT语句检索字段[done]
- 使用WHERE筛选空字符串和空值
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资源:
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
- 使用JOIN语句合并四个表的内容
- 使用SELECT语句检索字段[done]
- 使用WHERE筛选空字符串和空值
- 为什么不使用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资源:
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
- 这不是最有效的解决方案,但它是直截了当的
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);
}
}
}
}
我没有测试它,我只是简单地写了下来,希望没有打字错误。这不是最有效的解决方案,但它是直截了当的
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);
}
}
}
}
我没有测试,我只是简单地写了下来,希望没有打字错误