PHP json_encode()值返回null

时间:2014-02-15 01:23:12

标签: php

更新:所有值现在返回" A"当他们都应该是不同的价值观。 我想要做的是,通过邮寄请求发送一个值表到我的网站,网站将表数据保存到文本文件。我终于拥有它所以整个表打印到文本文档但所有的值都是A.我做错了什么?顺便说一句,我已经尝试了很多方法和许多其他类似问题"没有人为我工作过。提前谢谢。

CODE:

<?php
$foo = file_get_contents("php://input");
$stuff = json_decode($foo, true);

function createtxt($cttext, $location,$stuff)
{
    $ccontent  = $cttext;
    if (file_exists($location)) {
        echo "The file $ffilename exists";
    } else {
        $fp = fopen($location, "wb");
        fclose($fp);
                $formdata = array(
                'user'=> $cttext['user'],
                'secretkey'=> $cttext['secretkey'],
                'isanadmin'=> $cttext['isa'],
                'firsttime'=> $cttext['firsttime'],
                'display'=> $cttext['dis'],
                'test'=> $cttext['test'],
                'test2'=> $cttext['test2'],
                'type'=> $cttext['type']
                );
                $jsondata = json_encode($formdata);
                file_put_contents($location, $jsondata);
        echo 'Created User Text File Named "data.txt" ';
    }
}

function lookforuser($NAME,$stuff)
{
    if (!file_exists('users/' . $NAME))
        mkdir('users/' . $NAME);
    echo 'User Folder Created ';
    createtxt($NAME, 'users/' . $NAME . '/data.txt',$stuff);
}

lookforuser($stuff['user'],$stuff);
?> 

输入文本文件:

{"user":"A","secretkey":"A","isanadmin":"A","firsttime":"A","display":"A","test":"A","test2":"A","type":"A"}

2 个答案:

答案 0 :(得分:0)

$stuff永远不会在您的函数中定义。它是一个全局变量,但是你没有把它传递给你的函数;该函数只知道它的参数,内部初始化的变量,以及通过global显式引用的变量。您确实将$stuff内容传递给createtxt,因为您调用lookforuser然后createtxt的方式。

所以,解决此问题的最佳方法:每次在函数$stuff中使用$cttext时,将$stuff替换为createtxt。由于您编写代码的方式,您已将$stuff的值传递给createtxt,因此可以使用。

完整代码:

function createtxt($cttext, $location)
{
    $ccontent  = $cttext;
    if (file_exists($location)) {
        echo "The file $ffilename exists";
    } else {
        $fp = fopen($location, "wb");
        fclose($fp);
                $formdata = array(
                'user'=> $cttext['user'],
                'secretkey'=> $cttext['secretkey'],
                'isanadmin'=> $cttext['isa'],
                'firsttime'=> $cttext['firsttime'],
                'display'=> $cttext['dis'],
                'test'=> $cttext['test'],
                'test2'=> $cttext['test2'],
                'type'=> $cttext['type']
                );
                $jsondata = json_encode($formdata);
                file_put_contents($location, $jsondata);
        echo 'Created User Text File Named "data.txt" ';
    }
}

function lookforuser($NAME)
{
    if (!file_exists('users/' . $NAME))
        mkdir('users/' . $NAME);
    echo 'User Folder Created ';
    createtxt($NAME, 'users/' . $NAME . '/data.txt');
}

lookforuser($stuff['user']);
?>  

答案 1 :(得分:0)

您传递$cttext,但访问$stuff

由于未定义$stuff,因此数组解除引用也为空。

您可能希望将$stuff作为第三个参数传递。