function tt($arr) {
$parts = array ();
$is_list = false;
//Find out if the given array is a numerical array
$keys = array_keys ( $arr );
$max_length = count ( $arr ) - 1;
if (($keys [0] === 0) && ($keys [$max_length] === $max_length )) { //See if the first key is 0 and last key is length - 1
$is_list = true;
for($i = 0; $i < count ( $keys ); $i ++) { //See if each key correspondes to its position
if ($i != $keys [$i]) { //A key fails at position check.
$is_list = false; //It is an associative array.
break;
}
}
}
foreach ( $arr as $key => $value ) {
if (is_array ( $value )) { //Custom handling for arrays
if ($is_list)
$parts [] = tt ( $value ); /* :RECURSION: */
else
$parts [] = '"' . $key . '":' . tt ( $value ); /* :RECURSION: */
} else {
$str = '';
if (! $is_list)
$str = '"' . $key . '":';
//Custom handling for multiple data types
if (is_numeric ( $value ) && $value<2000000000)
$str .= $value; //Numbers
elseif ($value === false)
$str .= 'false'; //The booleans
elseif ($value === true)
$str .= 'true';
else
$str .= '"' . addslashes ( $value ) . '"'; //All other things
// :TODO: Is there any more datatype we should be in the lookout for? (Object?)
$parts [] = $str;
}
}
$json = implode ( ',', $parts );
if ($is_list)
return '[' . $json . ']'; //Return numerical JSON
return '{' . $json . '}'; //Return associative JSON
}
/**
* Short description.
* @param type $varname description
* @return type description
* @access public or private
* @static makes the class property accessible without needing an instantiation of the class
*/
function ss()
{
$data=array();
$data['touser'] = 'wecha_id';
$data['msgtype'] = "news";
$data['news'] = array(
"articles"=>array(
array('title'=>"夼中", 'description'=>'', 'url'=>'http://ui0.cn/shop/mobile/phone_manager.php?act=order&brand_id=','picurl'=>'http://ui0.cn/shop/data/index.jpg')
)
);
return tt($data);
} // end func
//}
//$xx=new Wechat();
echo ss();
$parts = array ();
$is_list = false;
//Find out if the given array is a numerical array
$keys = array_keys ( $arr );
$max_length = count ( $arr ) - 1;
if (($keys [0] === 0) && ($keys [$max_length] === $max_length )) { //See if the first key is 0 and last key is length - 1
$is_list = true;
for($i = 0; $i < count ( $keys ); $i ++) { //See if each key correspondes to its position
if ($i != $keys [$i]) { //A key fails at position check.
$is_list = false; //It is an associative array.
break;
}
}
}
foreach ( $arr as $key => $value ) {
if (is_array ( $value )) { //Custom handling for arrays
if ($is_list)
$parts [] = tt ( $value ); /* :RECURSION: */
else
$parts [] = '"' . $key . '":' . tt ( $value ); /* :RECURSION: */
} else {
$str = '';
if (! $is_list)
$str = '"' . $key . '":';
//Custom handling for multiple data types
if (is_numeric ( $value ) && $value<2000000000)
$str .= $value; //Numbers
elseif ($value === false)
$str .= 'false'; //The booleans
elseif ($value === true)
$str .= 'true';
else
$str .= '"' . addslashes ( $value ) . '"'; //All other things
// :TODO: Is there any more datatype we should be in the lookout for? (Object?)
$parts [] = $str;
}
}
$json = implode ( ',', $parts );
if ($is_list)
return '[' . $json . ']'; //Return numerical JSON
return '{' . $json . '}'; //Return associative JSON
}
/**
* Short description.
* @param type $varname description
* @return type description
* @access public or private
* @static makes the class property accessible without needing an instantiation of the class
*/
function ss()
{
$data=array();
$data['touser'] = 'wecha_id';
$data['msgtype'] = "news";
$data['news'] = array(
"articles"=>array(
array('title'=>"夼中", 'description'=>'', 'url'=>'http://ui0.cn/shop/mobile/phone_manager.php?act=order&brand_id=','picurl'=>'http://ui0.cn/shop/data/index.jpg')
)
);
return tt($data);
} // end func
//}
//$xx=new Wechat();
echo ss();