从POST数据在php中构建json

从POST数据在php中构建json,php,json,Php,Json,我需要通过url post数据更新对象的json列表。例如,使用url: http://myweb.com/index.php?name=Peter&surname=Brown 在php中,使用get方法: $name = $_GET["name"]; $surname = $_GET["surname"]; $json = array(); $json["nombre"] = $name; $json["lat"] = $lat; $

我需要通过url post数据更新对象的json列表。例如,使用url:

http://myweb.com/index.php?name=Peter&surname=Brown
在php中,使用get方法:

$name = $_GET["name"];
$surname = $_GET["surname"];
$json = array();

        $json["nombre"] = $name;
        $json["lat"] = $lat;
        $data[] = $json;

$json_end= json_encode($data);
而json_end有效地完成了我想要的:

[{"name":"Peter","surname":"Brown"}]
我的问题是如何通过增加json来构建如下数组:

[{"name":"Peter","surname":"Brown"}]
[{"name":"newname","surname":"newsurname"}]
// and so on
每次用户使用带有新参数的url时

我需要写入文件还是数据库?任何提示都将受到重视


其思想是任何用户都可以使用url添加一些dat。我试图将json存储到fiel中,但存储只在当前会话中持久

只需创建一个嵌套的用户数组:

$data = array (
    0 => array("name"=>"Peter","surname"=>"Brown"),
    1 => array("name"=>"newname","surname"=>"newsurname")
);

echo json_encode($data);

// [{"name":"Peter","surname":"Brown"},{"name":"newname","surname":"newsurname"}]

只需创建一个嵌套的用户数组:

$data = array (
    0 => array("name"=>"Peter","surname"=>"Brown"),
    1 => array("name"=>"newname","surname"=>"newsurname")
);

echo json_encode($data);

// [{"name":"Peter","surname":"Brown"},{"name":"newname","surname":"newsurname"}]

我认为将数据存储在会话中是最简单的,如下所示:

<?php
    session_start();

    if (isset($_GET['name'])) {
        $_SESSION['json'][] = $_GET;
    }

    echo json_encode($_SESSION['json']);
?>

编辑:在将$\u GET数组存储到会话中之前,您可能希望对其进行筛选,以便不存储不需要存储的值


编辑:当然,如果要为多个会话保存此数据,则需要使用文件或数据库(或者cookie)。这完全取决于您想对信息做什么。

我认为在会话中存储数据最简单,如下所示:

<?php
    session_start();

    if (isset($_GET['name'])) {
        $_SESSION['json'][] = $_GET;
    }

    echo json_encode($_SESSION['json']);
?>
<?
/* This needs to be at the top of your file, without ANYTHING above it */
session_start();

/* ... */

if(!array_key_exists('entries', $_SESSION))
{
    $_SESSION['entries'] = array();
}

$_SESSION['entries'][] = array("name" => $_GET["name"], "surname" => $_GET["surname"]);

$json_string = json_encode($_SESSION['entries']);

编辑:在将$\u GET数组存储到会话中之前,您可能希望对其进行筛选,以便不存储不需要存储的值

编辑:当然,如果要为多个会话保存此数据,则需要使用文件或数据库(或者cookie)。这完全取决于你想对这些信息做什么

<?
/* This needs to be at the top of your file, without ANYTHING above it */
session_start();

/* ... */

if(!array_key_exists('entries', $_SESSION))
{
    $_SESSION['entries'] = array();
}

$_SESSION['entries'][] = array("name" => $_GET["name"], "surname" => $_GET["surname"]);

$json_string = json_encode($_SESSION['entries']);
您可能还需要一种重置/清空阵列的方法。在这种情况下,我会将if测试从:

if(!array_key_exists('entries', $_SESSION))
致:

你可以通过访问

http://myweb.com/index.php?reset

编辑:如果在某处添加以下代码:

foreach($_SESSION['entries'] as $id=>$entry){ 
    printf("%2d: %s\n", $id, json_encode($entry));
}
if(array_key_exists('del', $_GET) && is_numeric($_GET['del']))
{
    $key = (int)$_GET['del'];
    if(array_key_exists($key, $_SESSION['entries']))
    {
        unset($_SESSION['entries'][$key]);
    }
    else
    {
        printf('<strong>ERROR: $_GET['del'] = %d but $_SESSION['entries'][%d] doesn't exist.</strong>', $key, $key);
    }
}
您将获得一个json元素列表,这些元素由各自的键枚举。例如,它可能看起来像:

0: "[{\"name\":\"Peter\",\"surname\":\"Brown\"}]" 1: "[{\"name\":\"newname\",\"surname\":\"newsurname\"}]" 2: "[{\"name\":\"George\",\"surname\":\"Washington\"}]" 3: "[{\"name\":\"John\",\"surname\":\"Adams\"}]" 将删除与“
”[{“name”:“George”,“姓氏”:“Washington”}]相对应的条目

剩下的条目将是:

0: "[{\"name\":\"Peter\",\"surname\":\"Brown\"}]" 1: "[{\"name\":\"newname\",\"surname\":\"newsurname\"}]" 3: "[{\"name\":\"John\",\"surname\":\"Adams\"}]" 4: "[{\"name\":\"Thomas\",\"surname\":\"Jefferson\"}]" 0:[{“姓名”:“彼得”,“姓氏”:“布朗”}] 1:“[{\'name\':\'newname\',\'names\':\'newsurname\'}]” 3:[{“姓名”:“约翰”,“姓氏”:“亚当斯”}] 4:[{“姓名”:“托马斯”,“姓氏”:“杰斐逊”}] 您可能还需要一种重置/清空阵列的方法。在这种情况下,我会将if测试从:

if(!array_key_exists('entries', $_SESSION))
致:

你可以通过访问

http://myweb.com/index.php?reset

编辑:如果在某处添加以下代码:

foreach($_SESSION['entries'] as $id=>$entry){ 
    printf("%2d: %s\n", $id, json_encode($entry));
}
if(array_key_exists('del', $_GET) && is_numeric($_GET['del']))
{
    $key = (int)$_GET['del'];
    if(array_key_exists($key, $_SESSION['entries']))
    {
        unset($_SESSION['entries'][$key]);
    }
    else
    {
        printf('<strong>ERROR: $_GET['del'] = %d but $_SESSION['entries'][%d] doesn't exist.</strong>', $key, $key);
    }
}
您将获得一个json元素列表,这些元素由各自的键枚举。例如,它可能看起来像:

0: "[{\"name\":\"Peter\",\"surname\":\"Brown\"}]" 1: "[{\"name\":\"newname\",\"surname\":\"newsurname\"}]" 2: "[{\"name\":\"George\",\"surname\":\"Washington\"}]" 3: "[{\"name\":\"John\",\"surname\":\"Adams\"}]" 将删除与“
”[{“name”:“George”,“姓氏”:“Washington”}]相对应的条目

剩下的条目将是:

0: "[{\"name\":\"Peter\",\"surname\":\"Brown\"}]" 1: "[{\"name\":\"newname\",\"surname\":\"newsurname\"}]" 3: "[{\"name\":\"John\",\"surname\":\"Adams\"}]" 4: "[{\"name\":\"Thomas\",\"surname\":\"Jefferson\"}]" 0:[{“姓名”:“彼得”,“姓氏”:“布朗”}] 1:“[{\'name\':\'newname\',\'names\':\'newsurname\'}]” 3:[{“姓名”:“约翰”,“姓氏”:“亚当斯”}] 4:[{“姓名”:“托马斯”,“姓氏”:“杰斐逊”}]
你需要把旧的参数保存在某个地方。每次加载URL时,PHP都会重新加载,没有上次的内存(除了
$\u SESSION
$\u COOKIE
)。这里的数据库听起来不错。是的,您需要将旧数据存储在文件/db/session中,因为每次用户通过url提交参数时,整个页面都将被重新生成,并且您的变量将被初始化。您到底想做什么?是否要永久保存这些名称?暂时的?它们被用来干什么?你需要把旧参数保存在某个地方。每次加载URL时,PHP都会重新加载,没有上次的内存(除了
$\u SESSION
$\u COOKIE
)。这里的数据库听起来不错。是的,您需要将旧数据存储在文件/db/session中,因为每次用户通过url提交参数时,整个页面都将被重新生成,并且您的变量将被初始化。您到底想做什么?是否要永久保存这些名称?暂时的?它们的用途是什么?这里的问题似乎是如何保存/检索其他用户。因为只有一个用户通过
GET
发送。所以嵌套数组是一个好主意,但是被问到应该保存在哪里,所以每次都会加载它。这里的问题似乎是如何保存/检索其他用户。因为只有一个用户通过
GET
发送。所以一个嵌套数组是个好主意,但是当问他应该把这个保存在哪里时,每次都会加载它。这对我来说是难以置信的效果。重置命令非常有用。是否可以删除要删除的特定条目?无论如何,非常感谢你这么快的回答!当然可以,但是您希望如何引用该条目?换句话说,你想怎么做呢?当我得到一个json时,比如:{“个人”:[{“姓名”:“彼得”,“姓氏”:“布朗”},{“姓名”:“彼得2”,“姓氏”:“纽瑟纳姆1”},{“姓名”:“彼得3”,“姓氏”:“布朗”},{“姓名”:“彼得4”,“姓氏”:“纽瑟纳姆”}可以只删除一个吗?是的,当然可以,但我在问你想怎么做?通过json编号、名称等。例如,通过id:{“id”=“0”、“名称”:“Peter0”、“姓氏”:“newsurname10”}、{“id”=“1”、“名称”:“Peter1”、“姓氏”:“newsurname1”},…。这对我来说是难以置信的效果。重置命令非常有用。是否可以删除要删除的特定条目?无论如何,非常感谢你这么快的回答!当然可以,但是您希望如何引用该条目?换句话说,你想怎么做呢?当我得到一个json时,比如:{“个人”:[{“姓名”:“彼得”,“姓氏”:“布朗”},{“姓名”:“彼得2”,“姓氏”:“纽瑟纳姆1”},{“姓名”:“彼得3”,“姓氏”:“布朗”},{“姓名”:“彼得4”,“姓氏”:“纽瑟纳姆”}可以只删除一个吗?是的,当然可以,但我在问你想怎么做?通过json编号、名称等。例如,通过id:{“id”=“0”,“名称”:“Peter0”,“姓氏”:“newsu”