php基础函数数组函数字符串函数

数组


    定义:数组是键值对的集合
        注意:
        (1)键值对必须成对出现
        (2)一个数组中不能出现重复的下标,如果出现了,那么后面的将会覆盖前面的
        (3)值可以为一个数组
        (4)下标可以为数字或字符串
(1)一维数组
    声明数组:
        $arr = array('key1'=>$value1,'key2'=>$value2....);
        $arr = array($v1,$v2,$v3....);//这里把键省略了,系统会分配默认的键
                                    分配规则:已使用的最大的整型键+1,如果没有则从0开始;
            Demo:
                $arr = array(1,2,3,4,5); // ==> 索引数组
                $arr = array('color1'=>red,'color2'=>blue); // ==> 以字符串为下标的称为关联数组
(2)二维数组
        定义:数组的值又为一个一维数组
            $arr = array('colors' => array('red','blue',green),'sizes' => array(1,3,4,5,7));
(3)foreach循环
        语法:
            foreach($arr as $key => $val){
            }

//Demo:
    $arr = array(1,4,7,3,7);
    foreach($arr as $key => $val){
        echo $key.' = '.$val.'<br/>';
    }

基本函数库


    (1)数学函数
        绝对值: abs($number) 返回非负数
        四舍五入: round($floatnum[,$num]) 返回浮点数,后面的参数为可选,表示保留几位小数,当为负数时表示往小数点前取位,默认取整   
        向上取整: ceil()    返回浮点数,如ceil(3.13) 结果为4
        向下取整: floor($number) 返回浮点数,如floor(3.93) 结果为3
        取平方根: sqrt($float) 返回浮点数    
        幂: pow($number,$exp) 返回数值型,两个参数都为数值型
        最大值: max($num1,$num2...$numX) 返回最大的那个数
        最小值: min($num1,$num2...$numX) 返回最小的那个数
        取随机数: rand([$min,$max]) 参数为可选
                     mt_rand([$min,$max]) 精度要高于rand(),即重复的机率要远低于rand()
(2)时间函数
        time();        返回当前时间戳
        date('Y-m-d H:i:s'[,time()]); 当前时间日期格式
            时间格式:
                y 两位数年份, Y    四位数年份
                m  两位数月份, n    一位数月份, M  英文月份的前三位, F    英文月份全写
                d        两位数日期, j    一位数日期
                w        星期中的第几天 0-6,D        星期的英文前三个字母,N    星期中的第几天 1-7 ,W        一年中的第几周
                h        小时00-11,*H    小时00-23,g        小时1-12,G    小时0-23
                i        分钟 00-59
                s        秒 00-59
                a            am或pm,A  AM或PM
        microtime()    获取当前时间,微秒级,样式: 0.98903200 1337159287,多用于测试程序运行时间,或取随机数
        date_default_timezone_set("PRC") 设置时间的函数
        date_default_timezone_get()    获取当前设置的时区
        strtotime('$timestring')    把时间格式的字符串转换成时间戳
            Demo:
                echo strtotime('2012-01-01');  //不写时间则默认为00:00:00

        也可以直接使用days、weeks、months、years对时间描述直接使用

            Demo:

                echo strtotime("-1 days");//输出前一天的时间

                echo strtotime("+1 week 2 days 4 hours 2 seconds");


今日作业:

//判断一个年份是否是闰年
echo '(1)判断一个年份是否为闰年<br/>';
$n = 400;
if(($n%4==0 && $n%100!=0) || $n%400 == 0 ){
    echo $n.'年是闰年';
} else {
    echo $n.'年不是闰年';
}
//写出至少三种获取文件扩展名的方法
$file = 'test.html';
echo '<br/>(2)获取文件后缀名的三种方法<br/>名件名:'.$file.'<br/>第一种方法:<br/>';
$file1 = pathinfo($file);
echo $file1['extension'].'<br/>';
echo '第二种方法:<br/>';
$file2 = explode('.',$file);
echo end($file2).'<br/>';
echo '第三种方法:<br/>';
$file3 = strrpos($file,'.');
echo substr($file,$file3+1).'<br/>';
//打鱼还是晒网
echo '(3)中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,
问这个人在2012年4月9日是在“打鱼“,还是在”晒网”。<br/>';
$start = strtotime('1990-1-1');
$end = strtotime('2012-4-9');
$times = ceil(($end-$start)/(3600*24));
if($times%5>3 || $times%5 == 0){
    echo '他正在晒网';
} else {
    echo '他正在打鱼';
}
//使用循环输出一个5X4的表格
echo '<br/>(4)使用循环输出一个5X4的表格<br/>';
echo '<table cellpadding="0" cellspacing="0" border=1>';
for($i=1;$i<=4;$i++){    
    echo '<tr>';
    for($j=1;$j<=5;$j++){
        echo '<td width="80" height="30">&nbsp;</td>';
    }
    echo '</tr>';
}
echo '</table>';
//输出100以内(不含100)以被3整除的整数
echo '<br/>(5)输出100以内(不含100)以被3整除的整数<br/>';
for($i=1;$i<100;$i++){
    if($i%3==0){
        echo $i.'&nbsp;';
    }
}
//输出100以内(不含100)以被3整除且个位数为6的整数
echo '<br/>(6)输出100以内(不含100)以被3整除且个位数为6的整数<br/>';
for($i=1;$i<100;$i++){
    if($i%3==0 && substr($i,-1)==6){
        echo $i.'&nbsp;';
    }
}
//输出1~100之间的偶数(5个数字作为一行输出)
echo '<br/>(7)输出1~100之间的偶数(5个数字作为一行输出)<br/>';
$k=0;
for($i=1;$i<=100;$i++){
    if($i%2==0){
        echo $i.'&nbsp;';
                $k++;
    }
    if($k==5){
        $k=0;
        echo '<br/>';
    }
}
//字符串$str="abcdabcarray";打印出所有字母a的位置
echo '<br/>(8)字符串$str="abcdabcarray";打印出所有字母a的位置。<br/>';
$str = 'abcdabcarray';
$len = strlen($str);
for($i=0;$i<$len;$i++){
    if($str{$i} == 'a'){
        echo '第'.++$i.'个是a&nbsp;&nbsp;';
    }
}
//$a=5;$b=3;$c=9;请写程序排序三个数,不能使用系统函数
echo '<br/>(9)$a=5;$b=3;$c=9;请写程序排序三个数,不能使用系统函数。<br/>';
$arr = array(5,3,9);
$count = count($arr);
for($i=1;$i<$count;$i++){
    $insval = $arr[$i];
    $insindex = $i-1;
    while($insindex>=0 && $insval < $arr[$insindex]){
            $arr[$insindex+1]=$arr[$insindex];
            $insindex--;
    }
    $arr[$insindex+1]=$insval;
}
print_r($arr);


字符串函数


            注:字符串有一个索引下标,如$str = “abcd”

              a-d从左至右的下标依次为0,1,2,3;可以用$str[0]或$str{0}输出a   
  int  strlen($string)

                获取字符串长度,返回int型
  mix  strpos($string,$find[,$start])

                获取某字符串在另一个字符串中第一次出现的位置

                返回下标值,如果不存在则返回false
                $start可选,为开始查找的位置//pos为position的简写
                判断某字符串是否包含在另一字符串中时需用全等===flase来判断,因为第一个下标值是0

   mix  strrpos($string,$find[,$start])

                返回某字符串在另一字符串中最后一次出现的位置

     注:另有stripos、strripos与上面两个一样,只是不区分大小写

  int  iconv_strrpos($string,$find[,$encode

                统计$find在$string中最后出现的位置,指定编码后可用于查找中文

  mix  strstr($string,$findstr)

                查找某字符串是否在另一字符串中,

                如果不存在则返回false,区分大小写,别名strchr
                如果存在,返回查找到的字符串开始至被查找的字符串结束
                    Demo:
                            $str = 'abcfdfgdgs';
                            var_dump(strstr($str,'dfg'));
  mix  stristr($string,$findstr)

                与strstr相同,但是不区分大小写
  mix  strrchr($string,$findstr)

                与strstr相同,但是返回的是查找到的最后一个结果
                    Demo:
                            $str = 'abcfdabcgs';
                            var_dump(strstr($str,'abc'));//output abcgs
  str  substr($string,$start[,$length])  

                截取字符串的一部分,

                $length不写时,截取从开始位置至字符串结束
                $start为负数时,为从后往前数第n位
                $length为负数时,$length为截取结束的位置
                    Demo:
                            $str = 'abcfdfgdgs';
                            echo substr($str,-4,-2);//output gd

  bool  iconv(in_code,out_code,$string)

                把$string从in_code编码转成out_code编码

  int  mb_strlen($string[,$encode])

                使用$encode时返回字符串的字符数,同iconv_strlen一样

  str  mb_substr($string,$start[,$length[,$encode]])

                类似substr,截取字符串,同iconv_substr一样

                使用第四个param声明字符集时,$start与$length都以字符数计算

                而不以字节数计算,这样就可以实现汉字截取不会乱码
  str  mb_strcut($string,$start[,$length[,$encode]])

                与mb_substr一样,但是是以字节数计算的

     注:mb_ 开头的函数需开启php.ini中 extension=php_mbstring.dll

/*
 * 使用gbk编码截取字符串使之能与英文字母对齐
 * 返回utf8编码字符串
 */
function iconvstr($string,$length){
    return @iconv("gbk","utf-8",mb_strcut(iconv("utf-8","gbk",$string),0,$length));
}

  str  strrev($string)

                把字符串反转

                Demo:    echo strrev('abc'); //output cba

//不用strrev实现字符串反转
$str = 'abcdef';
$len = strlen($str);
$newstr = '';
for($i=$len-1;$i>=0;$i--){
    $newstr .= $str[$i];
}
echo $newstr.'<br/>';

  str  str_replace($find,$replace,$string[,$count])

                查找并替换字符串,区分大小写

                PHP5.0以上可以使用$count来统计替换的次数,$count变量为自定义

                $find可以为数组,如果为数组将查找字符串中每一个存在的值并替换成$replace

                    Demo:

                            $vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
                            $onlyconsonants = str_replace($vowels, "", "Hello World of PHP");

                            //output  Hll Wrld f PHP

                $find与$replace可以同时为数组,那么将查找$find中的值,并替换成$replace中对应下标的值

                    Demo:

                            $phrase  = "You should eat fruits, vegetables, and fiber every day.";
                            $healthy = array("fruits", "vegetables", "fiber");
                            $yummy   = array("pizza", "beer", "ice cream");
                            $newphrase = str_replace($healthy, $yummy, $phrase);

                            //output   You should eat pizza, beer, and ice cream every day
  str  str_ireplace($find,$replace,$string)

                与str_replace一样,不区分大小写

  str  strtr($string,$find,$replace)

                查找字符串$string中的$find的每一个字符, 并替换成$replace对应的字符
                    Demo:
                           echo strtr('hilla warld','ia','eo'); //output hello world
  str  strtr($string,array(“find1”=>$value1,“find2”=>$value2 。。。))

                将字符串$string中的find替换成对应的value
  arr  explode($delimiter,$string[,$limit]) 

                以$delimiter为分隔符将字符串分隔成数组
                $limit为当分隔$limit个后不再继续分隔,后面的全归最后一个
                    Demo:
                            $str = 'a,b,c,d';
                            print_r(explode(',',$str,2));

                            //output array('a','b,c,d')
  str 
implode($delimiter,$array)  

            把数组以$delimiter为连接符转换为字符串,别名join()
                Demo:
                        $str = 'a,b,c,d';
                        $newstr = explode(',',$str);
                        var_dump(implode('#',$newstr));
  str  strtoupper($string)

                将$string中的小写字母全部转换成大写字母
  str  strtolower($string)

                将$string中的大写字母全部转换成小写字母
  str  ucwords($string) 

                将所有的单词首字母大写       

  str  ucfirst($string) 

                把字符串的首字母大写
  str  trim($string[, string $charlist ])

                去除字符串的首尾空格(或其它字符)        

                如果不指定第二个参数,trim() 将去除这些字符:
                " " (ASCII 32 (0x20)),普通空格符。                 "\t" (ASCII 9 (0x09)),制表符。                 "\n" (ASCII 10 (0x0A)),换行符。                 "\r" (ASCII 13 (0x0D)),回车符。                 "\0" (ASCII 0 (0x00)),空字节符。                 "\x0B" (ASCII 11 (0x0B)),垂直制表符。

                $hello = "Hello World";
                $trimmed = trim($hello, "Hdle");
                var_dump($trimmed); //output string(5) "o Wor"

  str  ltrim($string[, string $charlist ])

                去除字符串左边的空格(或其它字符)
  str  rtrim($string[, string $charlist ])

                去除字符串右边的空格(或其它字符)
  str  addslashes($string)

                给$string添加转义(单、双引号,转义符本身)

  str  stripslashes($string)

                给$string删除转义

  int  get_magic_quotes_gpc();

             获取当前自动转义的设置返回0或1

  str  ini_get($config_name)

                获取php.ini中的配置项,成功时返回获取的值,失败返回false

  str  ini_set($config_name,$new_value)

                设置php.ini中的配置项,成功则返回旧值,失败返回false

  str  htmlspecialchars($string[,$flags])

                将特殊字符如(< > & ")转换为 (&lgt; &gt; &amp; &quot;)
                使用第二个参数ENT_QUOTES时,会同时转换单引号
                使用第二个参数ENT_NOQUOTES时,不对单双引号转换
  str  htmlspecialchars_decode($string[,$flags])

                把实体字符转换为特殊字符,第二参数同上

  bool  is_string($string)

                判断$string是否为字符串,返回boolean值

  str  str_shuffle($string)

                将字符串重组成一个随机顺序的字符串

  str  str_repeat($string,$n)

                重复一个字符串$n次

  int  substr_count($string,$find[,$start[,$length

                统计$find在$string中出现的次数,可指定区域

  arr  str_split($string[,$length

                将字符串转换成数组,默认$length=1为1个字符串转换一个数组的值 

  int  preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

                执行一次正则匹配,结果返回给数组$matches,函数返回0(未匹配上)或1(匹配上)

  int  preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

                执行一个全局的正则匹配,结果返回给数组$matches,函数返回0(未匹配上)或匹配上的次数

  arr  preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )

                根据正则来分隔字符串,返回数组,未匹配上返回空数组

                Demo:

                    print_r(preg_split('/(?<!^)(?!$)/u', '达内科技' ));

                    //output    array('达','内','科','技');

  str htmlentities($string[,ENT_QUOTES])

        //替换所有实体标签,加ENT_QUOTES 则同时替换单双引号


数组函数

  arr  sort($array)

                值正序排列,会破坏原有的下标,强制转换成新的索引下标
  arr  asort($array)

                值正序排列,保留原有键值对关系对数组进行重新排列
  arr  arsort($array)

                值倒序排列,保留原有键值对关系对数组进行重新排列
  arr  ksort($array)

                下标正序排列,保留原有键值对关系对数组进行重新排列
  arr  krsort($array)

                下标倒序排列,保留原有键值对关系对数组进行重新排列
  int  count($array) 

                返回数组的长度,如果参数$arr不是数组,参数非null则返回 1
  mix  array_search($findval,$array)

                查找数组中是否某个值并返回下标,不存在则返回false

                可以查找多维数组中的值(数组)

                如果用于判断是否存在,须用 === false,如strpos一样
  bool  in_array($findval,$array)

                查找数组中是否存在某个值,与上面一样可以查找多维数组中的数组,返回true或false
  bool  array_key_exists($findkey,$array)

                查询数组中是否存在某个下标,返回true或false
  bool  isset($variable)

                判断变量是否存在,可以用来判断$array[$key]是否存在
  bool  empty($variable)

                判断变量的值是否为空(false)
  arr  array_reverse($array)

                反转数组,返回反转后的新数组,

                原有的关联下标关联关系不变,其它的重新建立索引
                    Demo:
                            $arr = array('a'=>'test','100'=>1,2,3,'d',array(1,2));
                            var_dump(array_reverse($arr));
                            //output array(array(1,2),'d',3,2,1,'a'=>'test');
  arr  array_merge($array1,$array2。。。)

                合并多个数组,如果下标重复了,

                索引下标会自动重新分配下标,关联下标会用后面的值覆盖前面的值
                    Demo:
                            $arr1 = array(1,2,3,'d'=>'ddd');
                            $arr2 = array(5,6,3,'d'=>'eee');
                            print_r(array_merge($arr1,$arr2));

                            //output  Array(    [0] => 1    [1] => 2    [2] => 3    [d] => eee    [3] => 5    [4] => 6    [5] => 3)
  arr  array_keys($array)

                获取所有下标并将下标组成新的数组

                返回由原数组的下标组成的新数组,建立索引下标
  arr  array_values($array)

                返回由原数组的值组成的新数组,建立索引下标
  int  array_push($array,$value1,$value2。。。)

                从尾部给$array追加值,返回新数组的长度值
                $value可以有任意多个,可以为数组类型
  int  array_unshift($array,$value1,$value2。。。)

                从前面给$array增加值,返回新数组的长度值
                $value可以有任意多个 并可以再为数组类型

  str  array_pop($array)

                删除数组$array的最后一个元素,返回被删除的那个值
  str  array_shift($array)

                删除数组的第一个元素,返回被删除的那个值
  bool  unset($var1[,$var2,$arr[3]。。。])

                删除变量,参数可以为一个或多个,unset和echo一样是语句没有返回值

                这里可以为数组或数组的某个键值对等任意类型

                $variable = NULL; 同样也是将变量置空

  str  end($array)

                数组指针指向最后,并返回数组最一个元素的值

  str  reset($array)

                数组指针指向最前,并返回数组最第一个元素的值

  mix  prev($array)

                数组指针左移一位,并返回左边一个元素的值,指针超出则返回false

  mix  next($array)

                数组指针右移一位,并返回右边一个元素的值,指针超出则返回false

  mix  current($array)

                返回数组指针当前指向的值

    注:如果数组包含有空单元(0 或者 "",空字符串),

            则使用prev、next、current在碰到这个单元时也返回 FALSE

$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport);    // $mode = 'bike';
$mode = next($transport);    // $mode = 'car';
$mode = prev($transport);    // $mode = 'bike';
$mode = end($transport);     // $mode = 'plane'

  arr  each($array)

                返回数组中当前指针的键值对,并将指针右移一,

                如果指超出则返回false,键值对被返回为四个单元的数组

                键名为 01keyvalue。单元 0key 包含有数组单元的键名,1value 包含有数据。

  arr  list($var1,$var2。。。) = array($v1,$v2。。。)

                把数组中的索引下标的值依次赋给list中对应的变量,

                list中变量的数量可以小于数组的长度,但不能大于数组的长度,返回的值为原数组

                        Demo:

                                $arr = array('a'=>1,2,3,4,5);
                                list($a,,$b) = $arr;
                                echo $a.'---'.$b;//output   2---4

    注:each()经常与list()结合来遍历数组

<?php
$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
reset ($fruit);
while (list ($key, $val) = each ($fruit)) {
    echo "$key => $val\n";
}
/* Outputs:
                           
a => apple
b => banana
c => cranberry
                           
*/

  bool  is_array($array)

                判断变量是否为数组,返回true或false

  bool  shuffle($array)

                对数组进行随机排序,原有的下标不会保留,返回boolean

  arr  array_unique($array)

                去除数组中的重复的值,返回新数组,原数组不变化

                        Demo:

                                    $arr = array(1,'a'=>1,'b'=>2,2);

                                    print_r(array_unique($arr));

                                    //output   array(1,'b'=>2)

  mix  array_rand($array[,$num])

                从数组中随机取出一个或多个元素,默认为1个,

                如果1个则返回随机抽取的那个下标,多个则返回随机抽取的下标组成的数组

  arr  array_slice($array,$start[,$length])

                截取数组的一部分,返回新数组,原数组不变,类似substr

  arr  array_splice($array,$start[,$length[,$insert]])

                删除数组的一部分,返回由被删除的部分组成的新数组

                原数组被修改成删除+替换后的新数组

                不指定$length则删到最后,$length=0则不删除数组的值

                使用$insert 在$start部分插入新的值[$insert可以为字符串或数组]

$arr = array(1,2,3,4);
$new = array_rand($arr,1);
//$new 的值为0-3随机一个
                     
$arr = array(1,2,3,4);
$new = array_rand($arr,2);
//$new 为长度2的数组,值为0-3随机,值不重复
                     
$arr = array(1,2,3,4);
$new = array_slice($arr,1,-1);
//$new is array(2,3);
                      
$input = array ("red", "green", "blue", "yellow");
array_splice ($input, 2);
// $input is now array ("red", "green")
                              
$input = array ("red", "green", "blue", "yellow");
array_splice ($input, 1, -1);
// $input is now array ("red", "yellow")
                              
$input = array ("red", "green", "blue", "yellow");
array_splice ($input, 1, count($input), "orange");
// $input is now array ("red", "orange")
                              
$input = array ("red", "green", "blue", "yellow");
array_splice ($input, -1, 1, array("black", "maroon"));
// $input is now array ("red", "green",
//          "blue", "black", "maroon")
$input = array ("red", "green", "blue", "yellow");
array_splice ($input, 3, 0, "purple");
// $input is now array ("red", "green",
//          "blue", "purple", "yellow");

  str  serialize($array)

                把数组序列化成字符串

  arr  unserialize($array)

                把被系列化的数组反系列化加数组

  arr  array_change_key_case($array[,$mode])

                把数组中的下标都转换成大写或小写,返回新数组,

                $mode的值可以为CASE_UPPER或者CASE_LOWER,

                $mode默认为CASE_LOWER,如果转换后有重复下标,则后面的会覆盖前面的


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值