php基础的一点注意事项
1.要弄懂“~”运算符的计算方法,首先必须明白二进制数在内存中的存放形式,二进制数在内存中是以补码的形式存放的
另外正数和负数的补码不一样,正数的补码,反码都是其本身,即:
正数9(1001)在内存中存储为01001,必须补上符号位
补码为01001
反码为01001,其中前面加的0是符号位,负数的是1
负数 -1(10001,开头的1为符号位)在内存中存放为,11111
其中11111为其补码
反码为11110
负数的补码是:符号位不变,其余各位求反,末位加1 ,即11111
反码是:符号位为1,其余各位求反,但末位不加1 ,即11110
也就是说,反码末位加上1就是补码
------------------------------------------------------------------------------------------------------------------------------------
弄懂了上述情况后,如何计算就好办了
假设有一个数~9,计算步骤如下,9=1001
其补码为01001,
对其取反10110,这个数是在内存中存放的,现在需要装换成原码,即先减1,然后取反得
11010,符号位为1是负数,即-10
2.单引号和双引号包含变量的区别
<?php
header("Content-type: text/html; charset=utf-8");
$a = "你好,欢迎来到PHP的世界!";
echo "<h3>$a</h3>";
echo '<h4>$a</h4>';
?>
输出结果:如果在单引号和双引号定义的字符串包含变量名,双引号所包含的变量名会自动被替换成变量的值,而在单引号中包含的变量名则按普通字符串输出,如下:
3.定界符:应用定界符定义字符串并输出,可以看出它和双引号没有什么区别,字符串中包含的变量也被替换成实际变量的值。(值得提出的一点,结束标识符必须单独另起一行,并且不允许有空格,如果在标识符前后有其他符号或字符就会发生错误)
<?php
header("Content-type: text/html; charset=utf-8");
$i = "PHP";
echo <<<std
Hello,welcome to here!<p>
Do you like $i?
std;
?>
4.条件为假的情况:
在PHP中,不是只有false值才是为假,在一些特殊情况下,如0、0.0、”0”、空白字符串("”)、只声明没有赋值的数组等,它们的布尔值也被认为是false。
5.php的数据类型可以分为3种,即标量数据类型、复合数据类型和特殊数据类型。
①标量数据类型:boolean(布尔型)、string(字符串型)、integer(整型)、float(浮点型)
②复合数据类型:array(数组;ps:数组下标是字符,在调用时下标需要单引号引起)、object(对象)
③资源(resource)、空值(null);
6.PHP中优先级从高到低顺序:&& > || > and > or;
7.函数名称是不区分大小写的,如果误定义了两个不同大小写的重名函数,程序将中止运行;而常量和变量的名称是区分大小写的。
8.函数的参数:
①按值传递方式:
<?php header("Content-type: text/html; charset=utf-8"); function example($m){ $m = $m * 15 + 50; echo "在函数内:\$m = ".$m; } $m = 1; example($m); echo "<p>在函数外:\$m = $m</p>"; ?>
结果: 在函数内:$m = 65
在函数外:$m = 1
②按引用传递方式:
与按值传递方式唯一的不同就是多了一个“&”符号,表示将实参的内存地址传递到形参中。这时,在函数内部的所有操作都会影响到实参的值
<?php header("Content-type: text/html; charset=utf-8"); function example(&$m){ $m = $m * 15 + 50; echo "在函数内:\$m = ".$m; } $m = 1; example($m); echo "<p>在函数外:\$m = $m</p>"; ?>
结果: 在函数内:$m = 65
在函数外:$m = 65
③默认参数(可选参数):
<?php header("Content-type: text/html; charset=utf-8"); function values($price,$tax=""){ $price += ($price*$tax); echo "价格:$price<br>"; } values(200,0.1); values(200); ?>
结果: 价格:220
价格:200
9.一维数组的遍历,eg:
<?php header("Content-type: text/html; charset=utf-8"); $array = array('柯文鑫','大花','小花','笑话','校花'); foreach($array as $key => $value) echo '数组下标'.$key.'数组元素'.$value."<br>"; echo "<br>"; // 数组下标0数组元素柯文鑫 // 数组下标1数组元素大花 // 数组下标2数组元素小花 // 数组下标3数组元素笑话 // 数组下标4数组元素校花 list($a,$b,$c,$d,$e) = $array; echo '数组元素'.$a."<br>"; echo '数组元素'.$b."<br>"; echo '数组元素'.$c."<br>"; echo '数组元素'.$d."<br>"; echo '数组元素'.$e."<br>"; echo "<br>"; // 数组元素柯文鑫 // 数组元素大花 // 数组元素小花 // 数组元素笑话 // 数组元素校花 for($a = 0;$a < count($array);$a++) echo '数组下标'.$a.'数组元素'.$array[$a]."<br>"; // 数组下标0数组元素柯文鑫 // 数组下标1数组元素大花 // 数组下标2数组元素小花 // 数组下标3数组元素笑话 // 数组下标4数组元素校花 ?>
10.二维数组的遍历,eg:
<?php header("Content-type: text/html; charset=utf-8"); $array = array( '数组1' => array('1','2','3'), '数组2' => array('4','5','6'), '数组3' => array('7','8','9')); print_r($array); echo "<br>"; //Array ( [数组1] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [数组2] => Array ( [0] => 4 [1] => 5 [2] => 6 ) [数组3] => Array ( [0] => 7 [1] => 8 [2] => 9 ) ) //遍历二维数组 foreach($array as $key => $value ) foreach($value as $keys => $values) { echo "<br>"; echo $array[$key][$keys]; } //123456789 ps各占一行 ?>
碰到的一些函数:
unset() --释放(销毁)给定的变量
substr() --返回字符串的子串
var_dump() --显示关于一个或多个表达式的结构信息,包括表达式的类型与值
addslashes() --自动转义函数
stripslashes() --还原字符串函数
PS:所有数据在插入数据库之前,有必要应用addslashe()函数进行字符串转义,以免特殊字符未经转义在插入数据库时出现错误。使用数据时应用stripslashes()函数进行还原,但数据在插入数据库之前必须再一次进行转义。
addcslashes() --用于实现对指定字符串中的字符进行转义,即在指定的字符charlist前加上反斜杠“\”
eg:后面的字符串代表从A开始到z的范围进行转码,当前面的大于后面将全部进行转义。
<?php header("Content-type: text/html; charset=utf-8"); $str = 'abcdefghijk'; echo addcslashes($str,'A..z'); //\a\b\c\d\e\f\g\h\i\j\k ?>
stripcslashes() --用来将应用addcslashes()函数转义的字符串str返回原样
strlen() --获取字符串长度函数(汉子占两个字符,在utf-8编码格式下用strlen()函数汉子占三个字符)
mb_substr() --获取字符串的部分(不仅可以获取字符串,还支持中文字符串的获取)
eg:结果:PHP自学
<?php header("Content-type: text/html; charset=utf-8"); $b = "PHP自学视频教程"; echo mb_substr($b,0,5,"UTF-8"); ?>
strcmp($str1,$str2) --字符串比较函数,相等返回0,$str1>$str2,返回1,小于返回-1。区分大小写。ps:小写字母比大写字母大
strcasecmp($str1,$str2) --同strcmp()函数一样,只是不区分大小写
strnatcmp() --按自然排序法比较,在自然排序法中,2比10小;在计算机序列中,10比2小。区分大小写
strnatcasecmp() --和strnatcmp()函数一样,只是不区分大小写
strncmp() --按指定从源字符串的位置比较,区分大小写
eg:
<?php header("Content-type: text/html; charset=utf-8"); $str1 = "str2"; $str2 = "str10"; $str3 = "mobook"; $str4 = "MOBOOK"; $str5 = "I like php"; $str6 = "i like my girlfriend"; echo strcmp($str1,$str2); //1 echo strcmp($str3,$str4); //1 echo strnatcmp($str1,$str2); //-1 echo strnatcmp($str3,$str4); //1 echo strncmp($str5,$str6,6); //-1 ?>
strstr() --用于获取一个指定字符串在另一字符串中首次出现的位置到后者末尾的子字符串。如果成功,则返回剩余字符串(存在相匹配的字符),否则返回false,区分大小写
stristr() --跟strstr()函数一样,只是不区分大小写
eg:
<?php header("Content-type: text/html; charset=utf-8"); echo strstr("明日图书网","日")."<br>"; //日图书馆 echo strstr("http:www.baidu.com","w"); //www.baidu.com ?>
substr_count() --检索子串在字符串中出现的次数
str_replace() --替换函数,区分大小写
str_ireplace() --替换函数,不区分大小写
eg:
<?php header("Content-type: text/html; charset=utf-8"); $str = "陈大花现在很困了,一躺下就想着睡觉的事情"; echo str_ireplace("大花","小花",$str); //陈小花现在很困了,一躺下就想着睡觉的事情 ?>
substr_replace() --对指定字符串中的部分字符进行替换
eg:(ps:编码utf-8下,汉子占3个字符)
<?php header("Content-type: text/html; charset=utf-8"); $str = "用今日的辛勤工作,换明天的双倍回报"; $replace = "百倍"; echo substr_replace($str,$replace,39,6); //用今日的辛勤工作,换明天的百倍回报 ?>
trim() --去除字符串左右两边的空白字符串和特殊字符
ltrim() --去除字符串左边的空白字符串和特殊字符
rtrim() --去除字符串右边的空白字符串和特殊字符
number_format() --函数用来将数字字符串格式化
eg:(ps:该函数可以有1个、2个或4个参数,但不能有3个。1个参数时,数字字符串格式化后舍去小数点后的值;2个参数时,数字字符串格式化后保留n位小数点;4个参数时,第3个参数用来代替小数点“.”,第4个参数用来代替每1000隔开的逗号“,”)
<?php $number = 3665.256; echo number_format($number)."<br>"; //3,665 echo number_format($number,2)."<br>"; //3,665.26 $number2 = 123456.7890; echo number_format($number2,2,'.',','); //123,456.79 ?>
explode() --按照指定的规则对一个字符串进行分割,返回值为数组
implode() --将数组中的元素组成一个新的数组
eg:
<?php header("Content-type: text/html; charset=utf-8"); $str = "php自学视频教程@java自学视频教程@Web自学视频教程@IOS自学视频教程"; $str_arr = explode("@",$str); print_r($str_arr); //Array ( [0] => php自学视频教程 [1] => java自学视频教程 [2] => Web自学视频教程 [3] => IOS自学视频教程 ) echo "<br>"; $str_arr2 = implode("*",$str_arr); echo $str_arr2; //php自学视频教程*java自学视频教程*Web自学视频教程*IOS自学视频教程 ?>
print_r() --显示关于一个变量的易于理解的信息。如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。
htmlentities() --将所有的字符都转换成HTML字符串
count() --统计数组元素个数函数
array_push() --添加数组元素函数
eg:
array_push($array,"'数组4' => array('10','11','12')"); //这添加的是一个二维数组的元素
array_pop() -- 获取数组最后一个元素,原数组的长度减一,若为空(或者不是数组),返回null
eg:
$last_array = array_pop($array); echo $last_array;
array_unique() --删除重复元素函数,ps:使用unset()函数可以删除数组中的某个元素,如unset($array[1]);
eg:
<?php header("Content-type: text/html; charset=utf-8"); $array = array('柯文鑫','大花','小花','笑话','校花'); array_push($array,'大花','小花'); print_r($array); echo "<br><br>"; $array = array_unique($array); print_r($array); // Array ( [0] => 柯文鑫 [1] => 大花 [2] => 小花 [3] => 笑话 [4] => 校花 [5] => 大花 [6] => 小花 ) // Array ( [0] => 柯文鑫 [1] => 大花 [2] => 小花 [3] => 笑话 [4] => 校花 ) ?>
array_search() --获取指定元素的键名
eg:
<?php header("Content-type: text/html; charset=utf-8"); $array = array('柯文鑫','大花','小花','笑话','校花'); $key_name = array_search('小花',$array); echo $key_name; //2 ?>