<?
/* 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']);
这将产生一个 JSON。但是我不知道您是否有意,但您的输出是一系列单独的 JSON。您可以通过将上面的最后一行替换为:
$json_string = '';
foreach($_SESSION['entries'] as $entry){
$json_string.= json_encode($entry) . "\n";
}
您可能还想要一种重置/清空阵列的方法。在这种情况下,我会更改 if 测试:
if(!array_key_exists('entries', $_SESSION))
到:
if(!array_key_exists('entries', $_SESSION) || array_key_exists('reset', $_GET))
您可以通过访问使用
http://myweb.com/index.php?reset
编辑:如果在某处添加以下代码:
foreach($_SESSION['entries'] as $id=>$entry){
printf("%2d: %s\n", $id, json_encode($entry));
}
您将获得由它们各自的键枚举的 json 元素的列表。例如,它可能看起来像:
0: "[{\"姓名\":\"彼得\",\"姓\":\"布朗\"}]"
1: "[{\"姓名\":\"新名字\",\"姓\":\"新姓\"}]"
2: "[{\"姓名\":\"乔治\",\"姓\":\"华盛顿\"}]"
3: "[{\"姓名\":\"约翰\",\"姓\":\"亚当斯\"}]"
如果您随后添加以下代码:
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);
}
}
您可以通过将 id 指定为del
GET 参数来删除单个 json 条目。
例如,
http://myweb.com/index.php?del=2
将删除对应的条目'[{"name":"George","surname":"Washington"}]';
其余条目将是:
0: "[{\"姓名\":\"彼得\",\"姓\":\"布朗\"}]"
1: "[{\"姓名\":\"新名字\",\"姓\":\"新姓\"}]"
3: "[{\"姓名\":\"约翰\",\"姓\":\"亚当斯\"}]"
4: "[{\"name\":\"Thomas\",\"surname\":\"Jefferson\"}]"