php - 通过恢复 PHP 代码创建 JSON 字符串

标签 php mysql json

基本上我从 JSON 格式的字符串开始。此字符串的示例如下:
[{"options":[{"valid":true,"content":"Answer"}],"content":"Question1","type": "text"},{"options":[{"valid":false,"content":"Answer"}],"content":"Question2","type":"radios"}] < br/>
使用 json_decode,我将其转换为一个数组,在本例中如下所示:

Array
(
    [0] => stdClass Object
        (
            [options] => Array
                (
                    [0] => stdClass Object
                        (
                            [valid] => 1
                            [content] => Answer
                        )

                )

            [content] => Question1
            [type] => text
        )

    [1] => stdClass Object
        (
            [options] => Array
                (
                    [0] => stdClass Object
                        (
                            [valid] => 
                            [content] => Answer
                        )

                )

            [content] => Question2
            [type] => radios
        )

)

并使用以下 PHP 代码将其存储在 MySQL 中:

$questions = json_decode($_POST['test']);

        $con=mysqli_connect("Localhost","root","","test");

        if (mysqli_connect_errno())
        {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }

        foreach( $questions as $question ){
            $options = $question->options;
            $options_id = array();
            $question_query = "INSERT INTO `question` (Content, Type) VALUES ('{$question->content}', '{$question->type}')";
            echo $question_query;
            if( !mysqli_query($con, $question_query) ){ echo mysqli_error($con);}
            $question_id= mysqli_insert_id($con);
            echo $question_id;
            foreach($options as $option){
            $options_query = "INSERT INTO `option` (Question_id, Content) VALUES ({$question_id}, '{$option->content}')";
            echo $options_query;
            if( !mysqli_query($con, $options_query) ){
            echo mysqli_error($con);
      }
  }

它只是存储问题和可能的答案。

因此,在某些时候,我需要向后执行此过程(从 MySQL 获取信息并再次构建 JSON,以便我可以呈现相应的 UI)。有没有办法只恢复这段代码并向后执行该过程?也许用json_enconde

最佳答案

你是不是像下面这样

$a = '[{"options":[{"valid":true,"content":"Answer"}],"content":"Question1","type":"text"},{"options":[{"valid":false,"content":"Answer"}],"content":"Question2","type":"radios"}]' ;
$b = json_decode($a,true);
//print_r($b);

foreach($b as $key=>$val){
    echo 'Content : '.$val['content'];
    echo '<br />';
    echo 'Type : '.$val['type'];
    echo '<br />';
    foreach($val['options'] as $key1=>$val1){
        echo 'Valid :'.$val1['valid'];
        echo '<br />';
        echo 'Answer : '.$val1['content'];
        echo '<br />';

    }
    echo '<hr><br />';
}

输出将如下所示

Content : Question1
Type : text
Valid :1
Answer : Answer
------------------------------------------------------
Content : Question2
Type : radios
Valid :
Answer : Answer

关于php - 通过恢复 PHP 代码创建 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20930692/

相关文章:

php - 警报 : [pool www] user has not been defined when using thecodingmachine/php:7. 1-v3-fpm-node10

php - 从单个字符串猜测城市、州和邮政编码

php - curl_setopt() CURLOPT_FOLLOWLOCATION 问题与 TCPDF

ios - Swift JSON 进入TableViewCell

javascript - 从在 angularJs 中动态创建的输入中查找总数

php - mysql 按 id 将表 1 左连接到表 2,其中表 2 id 最新日期

php - 用零填充数组

PHP AND 子句不显示结果,但 OR 是

带有字符串和 bool 值的 JSON 数组

python - 比较两个字典中的键并使用 for 循环更新值