自定义排序


function microtime_float() {
	list ( $usec, $sec ) = explode ( " ", microtime () );
	return (( float ) $usec + ( float ) $sec);
}
function cmp($a, $b) {
	if ($a == $b) {
		return 0;
	}
	return ($a < $b) ? - 1 : 1;
}
/**
 * ********************************************
 */
$time_start = microtime_float ();
$ss = array ();
for($j = 0; $j < 3000; ++ $j) {
	$n = $j + rand ( 0, 999999 ) / 0.000001;
	array_push ( $ss, $n );
}
usort ( $ss, "cmp" );
$tim = microtime_float () - $time_start;
print_r ( $ss );

echo "Did nothing in " . sprintf ( "%.2f", $tim ) . " seconds\n";
Share

PHP: parse_url 解析 URL,返回其组成部分

PHP: parse_url – Manual.

mixed parse_url ( string $url [, int $component = -1 ] )

本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。

本函数不是用来验证给定 URL 的合法性的,只是将其分解为下面列出的部分。不完整的 URL 也被接受, parse_url() 会尝试尽量正确地将其解析。

2个参数

url

要解析的 URL。无效字符将使用 _ 来替换。

component

指定

PHP_URL_SCHEME、 PHP_URL_HOST、 PHP_URL_PORT

 PHP_URL_USERPHP_URL_PASS、 PHP_URL_PATH

PHP_URL_QUERY 或 PHP_URL_FRAGMENT

的其中一个来获取 URL 中指定的部分的 string。 (除了指定为 PHP_URL_PORT 后,将返回一个integer 的值)。

 

返回值

对严重不合格的 URL, parse_url() 可能会返回 FALSE

如果省略了 component 参数,将返回一个关联数组 array,在目前至少会有一个元素在该数组中。数组中可能的键有以下几种:

  • scheme – 如 http
  • host
  • port
  • user
  • pass
  • path
  • query – 在问号 ? 之后
  • fragment – 在散列符号 # 之后

如果指定了 component 参数, parse_url() 返回一个 string (或在指定为 PHP_URL_PORT 时返回一个integer)而不是 array。如果 URL 中指定的组成部分不存在,将会返回 NULL

Share

PHP Pack()函数

定义和用法

pack() 函数把数据装入一个二进制字符串。
语法

pack(format,args+)

参数 描述
format 必需。规定在包装数据时所使用的格式。
args+ 可选。规定被包装的一个或多个参数。
format 参数的可能值:

* a – NUL-padded string
* A – SPACE-padded string
* h – Hex string, low nibble first
* H – Hex string, high nibble first
* c – signed char
* C – unsigned char
* s – signed short (always 16 bit, machine byte order)
* S – unsigned short (always 16 bit, machine byte order)
* n – unsigned short (always 16 bit, big endian byte order)
* v – unsigned short (always 16 bit, little endian byte order)
* i – signed integer (machine dependent size and byte order)
* I – unsigned integer (machine dependent size and byte order)
* l – signed long (always 32 bit, machine byte order)
* L – unsigned long (always 32 bit, machine byte order)
* N – unsigned long (always 32 bit, big endian byte order)
* V – unsigned long (always 32 bit, little endian byte order)
* f – float (machine dependent size and representation)
* d – double (machine dependent size and representation)
* x – NUL byte
* X – Back up one byte
* @ – NUL-fill to absolute position


输出:

PHP

输出:

PHP
Share

随机生成字符串

function random($length) 
{
$hash = '';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1; 
mt_srand((double)microtime() * 1000000); 
$chr_len = rand(3,$length); 
for($i = 0; $i < $chr_len; $i++) 
{ 
$hash .= $chars[mt_rand(0, $max)]; 
}
 return $hash;
}
Share