从php将数据写回json的问题

从php将数据写回json的问题,php,json,Php,Json,我在从PHP应用程序将数据写回JSON时感觉很奇怪。我没有得到的是相同的代码(减去明显的命名修改)在另一个应用程序中正常工作,没有问题,但是在这个应用程序中,它只是不接受它。示例代码如下所示- <?php $title = 'Dinner Randomizer 9000'; ?> <html> <head> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn

我在从PHP应用程序将数据写回JSON时感觉很奇怪。我没有得到的是相同的代码(减去明显的命名修改)在另一个应用程序中正常工作,没有问题,但是在这个应用程序中,它只是不接受它。示例代码如下所示-

<?php

$title = 'Dinner Randomizer 9000';

?>

<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<title><?php echo $title; ?></title>
</head>
<body>
<div class='container'>
<?php

$jsonRand = file_get_contents('dinner.json');
$jsonArray = json_decode($jsonRand, true);
$dinner = $jsonArray[rand(0, count($jsonArray) -1)];
$dinnerString = json_encode($dinner);

if (($pos = strpos($dinnerString, ":")) !== FALSE) {
    $dinner2 = substr($dinnerString, $pos+1);
}

$result = preg_replace('/[^a-zA-Z0-9_ -]/s','', $dinner2);

?> 

<div class="alert alert-info" role="alert">Dinner is <strong><?php echo $result; ?></strong>

<br />
<div class="alert alert-danger" role="alert">
That doesn't sound good, <a class="alert-link" href="<?php $_SERVER['PHP_SELF']; ?>">try again.</a>
</div>
</div>
<div>
    <?php
    $message = '';
    $error = '';

    if(isset($_POST["submit"]))
    {
        if(empty($_POST["title"]))
        {
            $error = "<label class='text-danger'>Enter dinner item</label>";
        }
        else{
            if(file_exists('dinner.json'))
            {
                $current_data = file_get_contents('dinner.json');
                $array_data = json_decode($current_data, true);
                $extra = array(
                    'title' =>  $_POST['title']
                );
                $array_data[] = $extra;
                $final_data = json_encode($arraydata);
                if(file_put_contents('dinner.json', $final_data))
                {
                    $message = "<label class='text-success'>Dinner idea added.</p>";
                }
                else{
                    $error = "JSON file does not exist";
                }
            }
        }
    }
    ?>
    <h3 align=""> Add a dinner idea</h3><br />
    <form method="post">
        <?php
        if(isset($error))
        {
            echo $error;

        }
        ?>
        <br />
        <label>Dinner idea</label>
        <input type="text" name="title" class="form-control" /><br />

        <input type="submit" name="submit" value="Submit" class="btn btn-info" /><br />
        <?php
        if(isset($message))
        {
            echo $message;
        }
        ?>
    </form>
</div>
</body>

</html>

第二行缺少下划线。

哇哈哈-谢谢你指出我的失败。真不敢相信这么容易,哈哈。修好机器工作得很好,现在一切正常。谢谢你…我知道这将是一件愚蠢的事情哈哈…这就是为什么你应该在开发过程中启用正确的PHP错误报告,这样PHP就有机会提醒你这些错误。那么,到底什么东西没有运行呢?你试图调试这个问题的是什么?@NicoHaase-我漏掉了一个下划线。这就是为什么我不应该喝酒并尝试编写代码的原因…而且它不会让我删除这个问题。
[
    {
        "title": "Chicken cordon bleu"
    },
    ...
]
$array_data[] = $extra;
$final_data = json_encode($arraydata);