#!/usr/bin/php <?php # -*- coding: utf-8 mode: php -*- vim:sw=2:sts=2:et:ai:si:sta:fenc=utf-8 function fix_value($value) { if ($value === "true") return true; elseif ($value === "false") return false; elseif ($value === "null") return null; else return $value; } function setp(&$array, $keys, $value) { if (is_array($keys)) $keys = implode(".", $keys); $keys = explode(".", $keys); $last = count($keys) - 1; $i = 0; if ($array === null) $array = array(); $current =& $array; foreach ($keys as $key) { if ($i == $last) break; if (!array_key_exists($key, $current)) $current[$key] = array(); if (!is_array($current[$key])) $current[$key] = array($current[$key]); $current =& $current[$key]; $i++; } if ($key === "") { $current[] = $value; } else { $current[$key] = $value; } } $data = array(); $empty = true; for ($i = 1; $i < $argc; $i++) { $namevalue = $argv[$i]; if (preg_match('/(.*?)=(.*)/', $namevalue, $ms)) { $name = $ms[1]; $value = fix_value($ms[2]); setp($data, $name, $value); } else { $value = fix_value($namevalue); $data[] = $value; } $empty = false; } $options = JSON_NUMERIC_CHECK; if ($empty) $options += JSON_FORCE_OBJECT; echo json_encode($data, $options);