我希望能够在html中将数组数据绘制成表格格式,仅供我参考学习。当我使用以下代码时,它表明数据存在于数组
$array_att_logs = $logs3->to_array();
echo " <pre>";
print_r($array_att_logs);
echo "/<pre>";
// it shows array as follow
Array
(
[Row] => Array
(
[0] => Array
(
[PIN] => 1274
[DateTime] => 2018-04-07 09:28:16
[Verified] => 15
[Status] => 3
[WorkCode] => 0
)
[1] => Array
(
[PIN] => 157
[DateTime] => 2018-04-07 10:22:56
[Verified] => 15
[Status] => 3
[WorkCode] => 0
)
// these are the raw punch data from biometric machine
&#13;
使用以下代码和一些解决方法,它会抛出未定义索引的错误,数组到字符串转换或未定义的偏移...抱歉,我是编程以及论坛世界的新手。
if(isset($array_att_logs) && $array_att_logs != NULL){
foreach ($array_att_logs as $key => $value) {
echo "<tr>";
echo "<td>" . $array_att_logs['PIN'] ."</td>";
echo "<td>" . $array_att_logs['DateTime'] ."</td>";
echo "</tr>";
$punch_query = "INSERT INTO punching_data_table (pin,date_time)
VALUES('$PIN','$value')";
$punch_result = mysql_query($punch_query)
}
}
&#13;
非常感谢对示例代码进行解释的答案。
答案 0 :(得分:0)
数组的顶级元素是索引为Row
的元素,因此您应该将foreach
循环更改为foreach ($array_att_logs['Row'] as $key => $value) { ... }
。
第二部分是mickmackusa在评论中已经指出的内容,您需要使用局部变量$value
来访问引脚和日期时间。
您也不需要在null
之后检查isset(...)
,因为这是isset
已经在做的事情。更好地检查是否存在Row
索引。
作为最终结果,您应该能够使用以下代码:
if(isset($array_att_logs) && isset($array_att_logs['Row'])) {
foreach ($array_att_logs['Row'] as $key => $value) {
echo "<tr>";
echo "<td>" . $value['PIN'] ."</td>";
echo "<td>" . $value['DateTime'] ."</td>";
echo "</tr>";
$punch_query = "INSERT INTO punching_data_table (pin, date_time) VALUES ('$value['PIN']', '$value['DateTime']')";
$punch_result = mysql_query($punch_query)
}
}
我还建议您查看MySQL中的保留字(see documentation)。您的DateTime
列使用其中一个名称,应该避免使用这些名称。最好使用更具描述性的名称,例如CreatedAt
,UpdatedAt
或MeasuredAt
。从旧的mysql_
函数转到mysqli_
函数或PDO
,这是一个好主意,作为下一步(由于mysql_
的安全问题,也是因为它们已被弃用了。)