[英]How do I echo an array to string conversion from JSON in a foreach
我想將數組傳遞到數據庫中,但是我收到通知,並且回顯無法正常打印我想要的字符串。
注意:第7行的數組到字符串的轉換(echo $ item;)
如何捕獲發送到數據庫中的數據?
數組是由作者及其書籍發送的。 例如
[{ “名稱”: “第一冊”, “書”:[ “Book1.1”]},{ “名稱”: “第二冊”, “書”:[ “Book2.1”, “Book2.2”]} ]
這是next.php,數據正在傳遞而不回顯。
<?php
var_dump($_POST);
$data = json_decode(stripslashes($_POST['arr']), true);
foreach($data as $item){
echo $item;
// insert to db
}
?>
警報向我提供了sendToServer函數中next.php的返回數據(請參見代碼段)。
success: function(data) {
alert(data);
}
代碼段中的完整代碼:
<!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <style type="text/css"> <!-- #main { max-width: 800px; margin: 0 auto; } --> </style> </head> <body> <div id="main"> <h1>Add or Remove text boxes with jQuery</h1> <div class="my-form"> <!-- <form action="next.php" method="post">--> <button onclick="addAuthor()">Add Author</button> <br> <br> <div id="addAuth"></div> <br> <br> <button onclick="submit()">Submit</button> <!-- </form>--> </div> <div id="result"></div> </div> <script type="text/javascript"> var authors = 0; function addAuthor() { authors++; var str = '<br/>' + '<div id="auth' + authors + '">' + '<input type="text" name="author" id="author' + authors + '" placeholder="Author Name:"/>' + '<br/>' + '<button onclick="addMore(\\'auth' + authors + '\\')" >Add Book</button>' + '</div>'; $("#addAuth").append(str); } var count = 0; function addMore(id) { count++; var str = '<div id="bookDiv' + count + '">' + '<input class="' + id + '" type="text" name="book' + id + '" placeholder="Book Name"/>' + '<span onclick="removeDiv(\\'bookDiv' + count + '\\')">Remove</span>' + '</div>'; $("#" + id).append(str); } function removeDiv(id) { $("#" + id).slideUp(function() { $("#" + id).remove(); }); } function submit() { var arr = []; for (i = 1; i <= authors; i++) { var obj = {}; obj.name = $("#author" + i).val(); obj.books = []; $(".auth" + i).each(function() { var data = $(this).val(); obj.books.push(data); }); arr.push(obj); } sendToServer(arr); //$("#result").html(JSON.stringify(arr)); } function sendToServer(data) { $.ajax({ type: "POST", data: { arr: JSON.stringify(data) }, url: "next.php", success: function(data) { alert(data); } }); } </script> </body> </html>
這是您從POST表格中獲得的信息:
[
{
"name":"Book1",
"books": [
"Book1.1"
]
},{
"name":"Book2",
"books": [
"Book2.1",
"Book2.2"
]
}
]
要使用foreach讀取數據,您需要執行以下操作:
foreach($data as $item) {
echo "Name: " . $item["name"] . "<br>";
echo "Books: " . implode(", ", $item["books"]) . "<br>";
// Other way..
echo "Name: " . $item["name"] . "<br>";
echo "Books: <br>";
foreach($book as $item["books"])
echo $book . "<br>";
}
通過此foreach,您可以操縱數據並構建INSERT語句以將數據輸入數據庫。
您會得到注意:第7行的數組到字符串的轉換(echo $ item;)是因為您要打印數組。 您不能打印數組,而可以打印字符串。 為此,請使用類似的內容。
<?php
var_dump($_POST);
$data = json_decode(stripslashes($_POST['arr']), true);
for ($i=0;$i<count($data);$i++){
echo "Name: ".$data[$i]['name']. "<br/>";
echo "Books: ";
foreach($data[$i]['books'] as $book){
echo $book . " ";
}
echo "...............<br/>";
// insert to db example
$sql="INSERT INTO author(id, name) VALUES (NULL, '".$data[$i]['name']."')";
//execute query and get last insert id
//$author_id=last insert id
foreach($data[$i]['books'] as $book){
$sql="INSERT INTO author_books(id, author_id, book_name) VALUES (NULL,'$author_id', '$book')";
//execute query
}
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.