簡體   English   中英

我如何在foreach中將數組從JSON回顯到字符串轉換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM