我在图书馆管理系统中有一个数组,其中第一个索引上有用户,下一个索引上分配给该用户的书籍,然后是这样分配的书籍的详细信息。
这是我需要以表格形式显示的内容
ggplot(FebMarTot2,aes(x=Month, y=Total)) + geom_line()
这就是我尝试像这样解析的方式
qplot(x=PV, y=Total, data=test)
我得到的错误
严重性:警告
消息:非法偏移类型
文件名:views / history.php
行号:4
请帮我解析一下这个数组
答案 0 :(得分:0)
这个数组对象,尝试使用像这样的对象作为数组。
$data_new = (array) $data;
这会将您的数组对象转换为数组格式。之后您可以将其传递给foreach。 或者你可以使用以下功能
function object_to_array($obj) {
$arr = is_object($obj) ? get_object_vars($obj) : $obj;
foreach ($arr as $key => $val) {
$val = (is_array($val) || is_object($val)) ? object_to_array($val) : $val;
$arr[$key] = $val;
}
return $arr;
}
这不是你问题的实际直接答案,但我建议你也可以尝试这种方式,如果答案有帮助标记为答案:)。
答案 1 :(得分:0)
我建议你这样做,
停止循环此类多维数组。如果您期望在帖子中显示输出,则此阵列形成是错误的。
尝试删除额外不必要的嵌套
[0] => Array (
[0] => stdClass Object
(
[id] => 1
[title] => PHP Made Easy
将数组划分并将其保存在不同的变量中,例如
$ userInfo = $ array [user] [0];
$ books = $ array [books];
$ bookdata = $ array [bookdata];
此后,您可以循环并开始向空数组添加数据,保持键/每条记录。此密钥将帮助您将其循环到表格中......
答案 2 :(得分:0)
根据你的数组结构,它是一个数组对象。
您必须使用调用数组键名来遍历主循环中的数组对象。所以你可以这样做。
//main loop
foreach ($data as $key=> $value) {
//get user info
echo $value['user'][0]->id;
//get books info
for($i=0; $i < count($value['books']); $i++) {
echo $value['books'][$i]->id;
}
//get further books info
foreach($value['bookdata'] as $books) {
echo $books->author;
}
}
现在您可以使用它来填充HTML表格。
答案 3 :(得分:0)
由于每个阵列只有一个用户,因此您可以遍历数组;使用conditional Logic
来决定当前密钥(如书籍,用户)......然后,您可以构建一个包含所需输出的HTML表格。测试可能在订单和you can find the test here。
<?php
$tblOutput = "<div class='books-wrapper col-md-12'>" . PHP_EOL;
if(!empty($arrBkLib)){
foreach($arrBkLib as $key=>$data){
if($key == 'user' && !empty($data[0])){
$userName = isset($data[0]->name) ? $data[0]->name : "N/A";
$tblOutput .= "<div class='user-data-pane col-md-6 pull-left'>" . PHP_EOL;
$tblOutput .= "<span class='btn btn-custom'>{$userName}</span>" . PHP_EOL;
$tblOutput .= "</div>" . PHP_EOL;
$tblOutput .= "<div class='action-pane col-md-6 pull-right'>" . PHP_EOL;
$tblOutput .= "<a class='btn btn-custom'>Ban User</a>" . PHP_EOL;
$tblOutput .= "</div>" . PHP_EOL;
$tblOutput .= "<table class='tbl-books-data'>" . PHP_EOL;
$tblOutput .= "<tr class='tbl-books-data-head-row'>" . PHP_EOL;
$tblOutput .= "<th class='tbl-books-data-head-cell'>Book</th>" . PHP_EOL;
$tblOutput .= "<th class='tbl-books-data-head-cell'>Issue Date</th>" . PHP_EOL;
$tblOutput .= "<th class='tbl-books-data-head-cell'>Return Date</th>" . PHP_EOL;
$tblOutput .= "<th class='tbl-books-data-head-cell'>Fine</th>" . PHP_EOL;
$tblOutput .= "<th class='tbl-books-data-head-cell'>Status</th>" . PHP_EOL;
$tblOutput .= "</tr>" . PHP_EOL;
}else if($key == 'books' && !empty($data)){
foreach($data as $iKey=>$books) {
$issueDate = isset($books->date_issue) ? date("d/m/Y", strtotime($books->date_issue)) : "N/A";
$returnDate = isset($books->date_return) ? date("d/m/Y", strtotime($books->date_return)) : "N/A";
$bookName = isset($arrBkLib['bookdata'][$iKey]->title) ? $arrBkLib['bookdata'][$iKey]->title : "N/A";
$status = isset($arrBkLib['bookdata'][$iKey]->status) ? $arrBkLib['bookdata'][$iKey]->status : "N/A";
$fine = "N/A"; // USE YOUR LOGIC HERE TO DETERMINE THIS VALUE...
$tblOutput .= "<tr class='tbl-books-data-row'>" . PHP_EOL;
$tblOutput .= "<th class='tbl-books-data-cell'>{$bookName}</th>" . PHP_EOL;
$tblOutput .= "<th class='tbl-books-data-cell'>{$issueDate}</th>" . PHP_EOL;
$tblOutput .= "<th class='tbl-books-data-cell'>{$returnDate}</th>" . PHP_EOL;
$tblOutput .= "<th class='tbl-books-data-cell'>{$fine}</th>" . PHP_EOL;
$tblOutput .= "<th class='tbl-books-data-cell'>{$status}</th>" . PHP_EOL;
$tblOutput .= "</tr>" . PHP_EOL;
}
}
}
$tblOutput .= "</table>" . PHP_EOL;
$tblOutput .= "</div>" . PHP_EOL;
}
echo $tblOutput;