PHP 函数(数组字符串)
函数四要素: 参数 变量 返回值 函数体
函数分类:
1.有参数的函数;
function Show() { echo "hello"; } Show();
2. 有返回值的函数
function Show() { return "hello"; } echo Show();
3. 没有参数的函数
function Show($a) { echo $a; } Show("你好");
4.可变参数的函数
function Sum() { $attr = func_get_args();//获取 用户传的参数 以数组的方式 获取(动态的获取) 组成数组 $n = func_num_args();//获取数组 的长度(传入参数的数量) $sum = 0; for($i=0;$i<$n;$i++) { $sum += $attr[$i]; } echo $sum;// 输出 求和 } Sum(1,2,3,4);
5. 数组
特点:
1.数组里面可以存储任意类型数据
2.数组并不是在内存里面开辟一块连续的区域存储
方法1:$attr = array(1,2); 方法2:$attr1 = [1,2,3,4,5];(DW里面 报错 但是 可以运行并出结果)
方法3: $attr2[0] = "hello"; $attr2[1] = "world"; var_dump($attr2);
方法三:注意 索引位置 和输出形式
$attr1[]=1; $attr1[]=2; $attr1[]=3; $attr1[]=4; $attr1[]=5; var_dump($attr1); 如果不写索引 则显示默认索引排序(和填写索引一样)
如果想留想在 局部信息中取出数组 可以用session 以后讲
一: 索引数组:
$attr = array(1,2,3);
var_dump($attr);
二: 关联数组:
$attr1 = array("one"=>1,"two"=>2,"3"=>3);
var_dump($attr1);
echo $attr1["one"]; //注意加引号 如果 是 3 自动转化 不需要加 引号
三.遍历数组
1.for循环遍历,只能遍历索引数组
$attr1 = array("one"=>1,"two"=>2,"3"=>3);
for($i=0;$i<count($attr);$i++)
{
echo $attr[$i]."<br>";
}
2.foreach遍历,索引关联都可以遍历
foreach($attr1 as $v)
{
echo $v."<br>";
}
foreach($attr1 as $k=>$v)
{
echo "{$k}--{$v}<br>";
}
3.each()和list()配合着来遍历数组
$attr = array(1,2,3,4);
$attr1 = array("one"=>1,"two"=>2,"3"=>3);
var_dump(each($attr1)); each($attr1) 取数组里面当前指针指向的元素( 运行一次指针自动往下 移动 一次; 每一次 指针 指向的位置 看成单独一个数组)(与下面 current 和 key 的区别)
$attr1 = array("one"=>1,"two"=>2,"3"=>3); var_dump(each($attr1)); var_dump(each($attr1));
list($a,$b,$c,$d)=$attr; 将右侧数组里面的元素赋值给参数列表里面的变量
$attr = array(1,2,3,4); list($a,$b,$c,$d)=$attr; var_dump($a);
结果
while(list($k,$v) = each($attr1)) { echo "{$k}--{$v}<br>"; }
4.使用指针的方式来遍历数组
$attr = array(1,2,3,4); $attr1 = array("one"=>1,"two"=>2,"3"=>3);
echo current($attr1),"<br>";取指针指向的当前元素的value值 echo key($attr1); //取指针指向的当前元素的key
next($attr1); //将指针向下调一个 prev($attr1); //将指针向上调一个 end($attr1); //将指针调向最后一个元素 reset($attr1); //将指针复位
遍历输出数组 key next
方法一 for($i=0;$i<count($attr1);$i++) // 必须知道字符串长度 { echo key($attr1); next($attr1); } 方法二 do { echo key($attr1); } while(next($attr1))-------> 方法二比较好 如果 可以跳到 下一位 则显示True 跳转下一位继续执行 如果 不能跳转下一位 则 显示false 不需要 知道 字符串长度
结果:
echo time(); //累计时间 秒 时间戳------> 运行结果 1481273549(发博客的那一天) echo "<br>"; echo date("Y-m-d H:i:s");// 运行结果 当前时间2016-12-9 echo "<br>"; echo date("Y-m-d H:i:s",1211163986) ;//格式化时间戳 把 后面的 改成前面的 格式 结果:2008-05-19 10:26:26 echo "<br>"; echo strtotime("2016-12-09 14:15:44");// 转化成时间戳 用秒累计 结果1481264144 echo "<br>";
2.字符串函数 $str = "Hello|World|ni|hao"; $attr = array("aa","bb","cc","dd"); echo strlen($str); //取字符串的长度 18 var_dump(strcmp($str,"hello world")); //比较两个字符串 //前面的 字符串 比后面的字符串长 返回int1 相等 返回 int 0; 小于后面 返回 int -1 echo strtolower($str); //转小写 echo strtoupper($str); //转大写 var_dump(explode("|",$str)); //拆分字符串,返回数组 echo implode("--",$attr); //将数组元素拼接成一个字符串 echo substr_replace($str,"***",0,5); //替换指定位置的字符串 用 *** 代替 字符串 索引 从0 到 5 的位置所有元素 echo str_replace("|","***",$str); //查找替换 用*** 代替字符串$str中 | echo substr($str,0,5); //截取字符串 截取 0号索引 和5号索引之间的 数 3.正则表达式 $str =<<<A A; $stre = "Hello2|World3|ni|4hao"; echo preg_replace("/\d/","#",$stre); //替换 ->Hello#|World#|ni|#hao var_dump(preg_split("/\d/",$stre)); //拆分->拆成数组 字符串拆成数组 preg_match_all("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/",$str,$arr); var_dump($arr); 4.数组方法 $attr = array(1,2,3,4,5,1); echo count($attr); //取数组长度 var_dump(array_unique($attr)); //去重 数组
$str = "Hello2|World3|ni5|hao"; preg_match_all("/\d/",$str,$arr); //匹配所有满足正则的字符串以数组的形式 放在$arr 里面 var_dump($arr);
结果
$str = "Hello2|World3|ni5|hao"; preg_match("/\d/",$str,$arr); //匹配所有满足正则的字符串以数组的形式 放在$arr里面 arr 是个二维数组 var_dump($arr);
结果
$attr = array(1,2,3,4,5,1); var_dump(in_array(6,$attr)); //判断某个值是否在数组里面 在 返回 true 否则 false
$attr = array(1,2,3,4,5,1); var_dump(array_reverse($attr)); //翻转数组 $attr = array(1,5,4,4,2,1);
var_dump(array_reverse($attr)); 删除 元素后 包括索引一起删除 其他索引 保持不变 unset($attr[1]); //删除数组的元素 var_dump(array($attr));
$attr = array(1,2,3,4,5,1); unset($attr[1]); //删除数组的元素 var_dump(array_values($attr)); //重新索引
$attr = array(1,2,3,4,5,1); array_push($attr,"hello"); var_dump($attr);--> 返回如下图
var_dump(array_push($attr,"hello"));--> 返回7
$attr = array(1,2,3,4,5,1); var_dump(array_merge($attr,array(5,6))); //合并数组
PHP练习题:
<?php $array=array( $array1=array("书名","年龄","民族"), $array1=array("武动乾坤","12岁","汉族"), $array1=array("大主宰","33岁","蒙族") ); echo "<table bgcolor='#CCCCCC' border='1px' align='center' border='0' width='510' cellpadding='0' cellspacing='0' >"; for($i=0;$i<count($array);$i++) { echo "<tr height='30' >"; for($t=0;$t<count($array[$i]);$t++) { echo "<td align='center' width='170'> {$array[$i][$t]}</td>"; } echo "</tr>"; echo "<br>"; }; echo "</table>"; ?>
遍历集合 不能一次性输出 二维数组 如果 输出二维数组必须用嵌套
<?php $attr = array( array("n001","汉族"), array("n002","回族"), array("n003","维吾尔族") ); echo "<select>"; foreach($attr as $v) { echo "<option>{$v[1]}</option>"; } echo "</select>"; ?>