<?
/* 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: "[{\"name\":\"newname\",\"surname\":\"newsurname\"}]"
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);
}
}
del
GET パラメータとして id を指定することで、個々の json エントリを削除できます。
例えば、
http://myweb.com/index.php?del=2
に対応するエントリを削除します'[{"name":"George","surname":"Washington"}]';
残りのエントリは次のようになります。
0: "[{\"名前\":\"ピーター\",\"姓\":\"ブラウン\"}]"
1: "[{\"name\":\"newname\",\"surname\":\"newsurname\"}]"
3: "[{\"名前\":\"ジョン\",\"姓\":\"アダムス\"}]"
4: "[{\"名前\":\"トーマス\",\"姓\":\"ジェファーソン\"}]"