函数四要素:  参数  变量   返回值  函数体

函数分类:

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>";
?>

下拉列表(遍历集合)

 

 

PHP 函数(数组字符串)的更多相关文章

  1. javascript函数一共可分为五类: ·常规函数 ·数组函数 ·日期函数 ·数学函数 ·字符串函数

    javascript函数一共可分为五类:    ·常规函数    ·数组函数    ·日期函数    ·数学函数    ·字符串函数    1.常规函数    javascript常规函数包括以下9个 ...

  2. php数组函数,字符串,linux命令

    1>> Linux常用命令一. 文件目录操作命令1. ls命令    命令格式:ls [选项] [目录名]    命令功能:列出目标目录中所有的子目录和文件.2. 命令格式:cd [目录名 ...

  3. ***php解析JSON二维数组字符串(json_decode函数第二个参数True和False的区别)

    客户端的请求体中的数据:[{"msg_id": 1, "msg_status": "HAS_READ" }, { "msg_id& ...

  4. ***PHP implode() 函数,将数组合并为字符串;explode() 函数,把字符串打散为数组

    实例 把数组元素组合为字符串: <?php $arr = array('Hello','World!','I','love','Shanghai!'); echo implode(" ...

  5. js数组,字符串,json互相转换函数有哪些

    js数组,字符串,json互相转换函数有哪些 一.总结 一句话总结: JSON.stringify(arr) JSON.parse(jsonString) str.split('') array.jo ...

  6. PHP 中使用explode()函数切割字符串为数组

    explode()函数的作用:使用一个字符串分割另一个字符串,打散为数组. 例如: 字符串 $pizza = "第1 第2 第3 第4 第5 第6"; 根据空格分割后:$piece ...

  7. js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么

    js课程 3-10  js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么 一.总结 一句话总结:js中是对象点方法的形式,这些方法都是对象的方法,而在php.java中却不是这样. 1.j ...

  8. 11-C语言指针&一维数组&字符串

    一.用指针遍历数组元素 1.最普通的遍历方式是用数组下标来遍历元素 1 // 定义一个int类型的数组 2 int a[4] = {1, 2, 3, 4}; 3 4 int i; 5 for (i = ...

  9. Scanf函数输入字符串

    Scanf函数输入字符串 #define _CRT_SECURE_NO_WARNINGS //#pragma warning(disable:4996) #include <stdio.h> ...

随机推荐

  1. android JSON获取值String无法转换成JSONObject

    项目中,已经获取到服务器返回的XML,并且已经解析. value= (String) result.getProperty("Value").toString().trim();J ...

  2. 匿名内部类与equals之学习要扎实

    匿名内部类是胡哥给我上的第一节课,他一直在不断强调着“逻辑与思维”的重要性, 遇到问题不能用“不知道和没学过”去逃避它,所有的不知道和没教过都源自于没见过,一定要学会去看源代码,不要人云亦云..... ...

  3. elk的搭建----待续

    http://yanliu.org/2015/08/19/ELK-redis%E6%90%AD%E5%BB%BAnginx%E6%97%A5%E5%BF%97%E5%88%86%E6%9E%90%E5 ...

  4. 基于Emgu CV的人脸检测代码

    这个提供的代码例子是Emgu CV提供的源码里面自带的例子,很好用,基本不需要改,代码做的是人脸检测不是人脸识别,这个要分清楚.再就是新版本的Emgu CV可能会遇到系统32位和64位处理方式有区别的 ...

  5. 微信JS接口

      微信JS接口 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置来源:http://www.cnblogs.com/txw1958/p/ ...

  6. BZOJ 3230: 相似子串

    3230: 相似子串 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1485  Solved: 361[Submit][Status][Discuss ...

  7. UVa 11987 Almost Union-Find(支持删除操作的并查集)

    传送门 Description I hope you know the beautiful Union-Find structure. In this problem, you’re to imple ...

  8. VMware 虚拟上网的的三种模式 ——bridged、host-only、NAT 模式

    恐怕这是今年在上海的最后的一篇博客了,同事们上班都不工作了,我也没有什么事情要做.为什么要写这篇博客呢,原因是我回家要带上自己的笔记本,里面装了一个虚拟机.平时自己的学习和工作都是在虚拟机里进行的.回 ...

  9. MongoDB系列二

    简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.  MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql ...

  10. <<< 将一个rar格式的文件变成一张jpg图片,按照后缀来选择打开他的模式

    把一个压缩格式和一张图片合成,按照后缀来判断他打开是图片还是解压文件,后缀是jpg打开的就是一张图片,后缀是rar打开的就是一个压缩包,里面存放你放的东西   :例如(秘密) 准备一张图片,test. ...