パラメータを付けないで実行すると、適当な配列のシリアライズが保存されます。
再度パラメータを付けてアクセスすると、追加、編集、削除を実行します。
modeの値をinsert, update, removeに指定してそれぞれの切り分けをしています。
DBを使う前の「とりあえず作ってみた」などに使えるサンプルです。
$filename = "../serial/test.data";
if($_GET){
$str = $_GET;
}else{
// $param = 'mode=insert&name=hoge';
// $param = 'mode=remove&name=123';
// parse_str($param, $str);
}
if(file_exists($filename)) {
$array = unserialize(file_get_contents($filename));
}else{
$array = [
['id' => 0,'name' => 'りんご','price' => 100,'color' => '赤'],
['id' => 1,'name' => 'みかん','price' => 120,'color' => '橙'],
['id' => 2,'name' => 'ぶどう','price' => 300,'color' => '紫']
];
save_serial($array);
}
if($str['mode'] == 'insert'){
$id = date('YmdHis');
$array[] = [
'id' => $id,'name' => $str['name'],'price' => $str['price'],'color' => $str['color']
];
save_serial($array);
}elseif($str['mode'] == 'remove'){
$id = $str['id'];
foreach($array as $k => $v){
if($v['id'] == $id){
$splice_key = $k;
}
}
if($splice_key){
array_splice($array, $splice_key, 1);
}
save_serial($array);
}elseif($str['mode'] == 'update'){
$id = $str['id'];
$str_replace = $str;
unset($str_replace['mode']);
foreach($array as $k => $v){
if($v['id'] == $id){
$array[$k] = array_replace($array[$k],$str_replace);
}
}
save_serial($array);
}
if($str['mode']){
a($str['mode']);
}
p($array);
function save_serial($array){
global $filename;
file_put_contents($filename, serialize($array), LOCK_EX);
}
function p($a){
echo '<'.'pre>';
print_r($a);
echo '<'.'/pre>';
}
function a($a){
echo '<'.'div>';
print_r($a);
echo '<'.'/div>';
}