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输出表格

遍历集合 不能一次性输出 二维数组   如果 输出二维数组必须用嵌套

<?php

$attr = array(
    array("n001","汉族"),
    array("n002","回族"),
    array("n003","维吾尔族")
);

echo "<select>";

foreach($attr as $v)
{
    echo "<option>{$v[1]}</option>";
}

echo "</select>";
?>
下拉列表(遍历集合)

 

 

 

 

 

posted @ 2016-12-09 12:03  get("新技能")  阅读(524)  评论(1编辑  收藏  举报