首页 > PHP > PHP拾遗捡漏(一)

PHP拾遗捡漏(一)

2009年5月6日

PHP拾遗捡漏(一)

最近在看<PHP和MySQL WEB开发>第四版, 把一些基础知识又复习了一遍, 还是很有收获的.
边看边记录一些文字吧.

1. echo 输出字符串
双引号和单引号的区别

$foo = 'hello';
echo $foo.' world!<br />';
echo "$foo world!<br />";
echo '$foo world!<br />';

运行后, 可以看出第一第二两个语句是等价的, 而第三个语句则原样输出.

结论: 对于任何简单类型的变量, 都可以将变量写入到一个由双引号引起来的字符串中, 在双引号中, 变量名称将被变量值所代替.而在单引号中, 变量名称,或者任何其他文本都会不经修改而直接发送到浏览器端.

Heredoc字符串也是插补的, 就像双引号字符串.

2.正确理解标识符
PHP中, 标识符是区分大小写的, $foo和$Foo是不同的, 而函数名称则不区分大小写.

$foo = 'foo';
$Foo = 'Foo';
echo "$foo<br />";
echo "$Foo<br />";
echo bar()."<br />";
echo Bar()."<br />";
 
function bar() {
	echo 'bar';
}

3.引用
PHP中引用操作符&可以在关联赋值时使用. 通常, 在将一个变量的值赋给另外一个变量的时候, 将先产生原变量的一个副本, 然后再将它保存在内存的其它的一个地方.
例如

$a = 5;
$b = $a;
$a = 7; // 此时$a=7, 而$b仍然等于5

这两行代码首先将产生一个$a的副本, 然后再将它保存到$b中, 如果随后改变$a的值, $b的值不会有任何变化.

可以通过引用操作符&来避免产生$a的副本, 此时$a和$b都指向了内存中的相同地址.

$a = 5;
$b = &$a;
$a = 7; // 此时$a和$b都等于7

可以通过unset($a)来重置它们来改变所指向的地址, 重置并不会改变$b(7)的值.

4. “执行操作符, 它是一对反向单引号, PHP将试着将其间的命令当做服务器端的命令行来执行. 表达式的值就是命令的执行结果.

$out = `dir c:` // windows, Linux为 `ls -la`
echo $out;

5. isset()和empty()
bool isset(mixed var)
该函数需要一个变量名称作为参数, 如果这个变量存在返回true,否则返回false. 也可以传递一个由逗号间隔的变量列表, 如果所有变量都被设置了. 返回true.
可以使用unset()来销毁一个变量.

函数empty()可以用来检测一个变量是否存在,以及它的值是否为空和非0, 相应的返回true和false.

简单的来说empty()比isset()多检测值的非空和非0状态.

6. range()可以使用range()函数自动创建一个按升序排列的数字数组.

// 例如以下的代码将创建一个1~10的数字数组
$numbers = range(1, 10);
//range()函数具有一个可选的第三个参数, 这个参数允许设定值之间的步幅. 例如创建一个1~10之间的奇数数组
$odds = range(1, 10, 2);
//range()函数也可以对字符进行操作, 如下
$letters = range('a', 'z');

7. 数组排序
使用sort()函数, sort()函数可以将数组按字母或数字升序进行排序

 $products = array('Tires', 'Oil', 'Spark Plugs');
 sort($products);
 $prices = array(100, 10, 4);
 sort($prices);

sort()函数的第二个参数是可选的, 这个可选参数可以传递SORT_REGULAR(默认值), SORT_NUMERIC或SORT_STRING, sort()函数是区分大小写的.

使用asort()和ksort()函数对关联数组排序
函数asort()根据数组的每个元素值进行排序.
函数ksort()根据数组的每个元素进行排序.

以上三个函数都使数组按升序排序, 它们每个都对应有一个反向排序的函数, 分别是rsort(), arsort(), krsort().

用户自定义排序usort()
usort()函数的参数分别是希望排序的数组和用户比较的函数的名称

 // 这是一个普通的二维数组, 存储了3种产品的代码,说明和价格.
 $products = array(array('TLR', 'Tires', 100),
		array('OIL', 'Oil', 10),
		array('SPK', 'Spark Plugs', 4));
 
 // 以下代码对订单数组中的第二列(说明)按字母进行排序
 function compare($x, $y) {
	if ($x[1] == $y[1])
		return 0;
	else if ($x[1] < $y[1])
		return -1;
	else
		return 1;
 }
 
 usort($products, 'compare')
 
 // 同时实现反向排序
 function reverse_compare($x, $y) {
	if ($x[1] == $y[1])
		returnn 0;
	else if ($x[1] < $y[1])
		return 1;
	else
		return -1;
 }
 
 usort($products, 'reverse_compare');

转载请注明出处: http://www.suiyuan.org

admin PHP

  1. 2009年5月14日00:04 | #1

    博主,小弟正在学PHP的正则表达式,太难了。。。。望赐教,跪谢!

  2. 2010年7月21日13:21 | #2

    博主的博客不错,经常收看了欢迎来我的网站踩踩:义乌小饰品批发

  1. 本文目前尚无任何 trackbacks 和 pingbacks.