49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
#!/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);
 |