数组

作者: overisover | 来源:发表于2017-02-16 08:51 被阅读0次

    数组的定义:

    js:存储多个相同类型数据 ,有序的数据;
    php数组

    • 1,:索引数组,同js;
      声明:$arrName=array(元素值1,元素值2,...,元素值n);
      count(数组):获取数组的长度
    <?php
    $arrName=array('a','b','c','d');//声明,也可以直接声明 $arrName=['a','b'];同js 版本要5.3以上;
    //访问$arrName[0];a
    echo 'number-two: '.$arrName[1];
    
    echo $arrName[count($arrName)-1];//获取最后一个值
    echo '<br/>';
    //修改数组的值;下标存在则修改,不存在则添加值;跳过的位置不存在;有几个值,长度就统计几个值;
    //js中不存在的值是 空/undefined;
    $arrName[0]='123';
    //查看数组的值,var_dump();查看的信息更全面;print_r();只看原数据;也可以查看变量
    echo  '<pre>';//原样输出;
    print_r($arrName);
    echo  '</pre>';
    //在尾部追加元素
    $arrName[]='e';
    print_r($arrName);
    ?>
    

    数组遍历,foreach

    <pre>
        遍历数组,foreach(数组 as 变量名){
        语句块执行的次数又数组的长度决定
            语句块
        };
        需要输出下标的话:
        foreach(数组 as 变量名0=>变量名1){ //变量名0是下标,变量名1是值;
        语句块执行的次数又数组的长度决定
            语句块
        };
    </pre>
    <?php
    $arr=array('a','b','c','d',);
    foreach($arr as $index=>$item){//$index 代表下标,$item 每一个值;
        ?>
        <p><?=$index+1?><?=$item?></p>
    <?php
    }
    ?>
    
    • 2.关联数组声明array('key1'=>value1,'key2'=>value2,...,'keyn'=>valuen,)
      //keyn为数组元素对应的键名;
    <h2>关联数组声明</h2>
    <pre><!--原样输出-->
    <?php
    //关联数组声明 array('key1'=>value1,'key2'=>value2,...,'keyn'=>valuen,)
    //keyn为数组元素对应的键名;
    $message=array('title'=>'学习PHP','content'=>'HTML ,CSS等','name'=>'frank');
    $keys=array_keys($message);//查看数组的每个自定义的索引;
    print_r($keys);
    $content=array_values($message);//查看数组的每个值;
    print_r($content);
    //修改值
    $message['title']='学习HTML';//会覆盖前面的值;
    print_r($message);
    //增加值
    //$message['data']='2017.2.15';//$message[]='2017.2.15';是复合数组,下标为0;
    print_r($message);
    //关联数组的循环
    $key=array('title'=>'标题','content'=>'内容','name'=>'姓名');
    foreach($message as $key=>$value){//$key代表每个自定义的索引;$value 是对应的值;
        ?>
    <p>key: <?=$key?> value:<?=$value?></p>
        <?
    }
    ?>
    </pre>
    

    关联数组的值查找

     <?php
        $color =  isset($_GET['bg'])?$_GET['bg']:'';
        $bgColors = array('red'=>'红色','blue'=>'蓝色','yellow'=>'黄色','green'=>'绿色');
        if(empty($color)){
            //第一种方式
    //        $color = array_keys($bgColors)[0];
    //        echo $color;
    //        echo current($bgColors);  //获取数组中的当前元素,当指针没有移动时当前元素是第一个元素
    //        echo end($bgColors);  //获取数组中最后一个元素,、指针也移向最后一个位置
    //        echo current($bgColors);
    //        echo reset($bgColors); //获取数组中第一个元素,指针也移向第一个位置
    //        echo next($bgColors); //获取数组中下一个元素,指针也移向下一个位置
    //        echo prev($bgColors); //获取数组中上一个元素,指针也移向上一个位置
    //        echo current($bgColors);
              $first = reset($bgColors);
              //array_search(元素值,数组名)----查找元素所在数组中对应的下标,没有找到返回false,找到对应的下标
              $color = array_search($first,$bgColors);
    isset ()里面是数组的话是判断,变量是否声明;
        }
        ?>
    
    

    多维数组

    <?php
    $students=array(
        array('name'=>'小二','age'=>'34','sex'=>'女'),
        array('name'=>'小三','age'=>'33','sex'=>'男'),
        array('name'=>'小四','age'=>'23','sex'=>'女')
    );
    //访问数组
    print_r($students[0]);
    echo '<br/>';
    echo '访问第一个数组的name属性'.$students[0]['name'];//访问第一个数组的name属性;
    ?>
    

    获取URL地址中的参数

    浏览器的请求方式,get,post
    get请求是数据是呈现在地址栏中,有大小限制,大约1024字节;
    post 方法:传递数据大小与php.ini 配置有关,post_max_size,默认8M;

    $_GET,$_POST是PHP设置的预定义数组,当没有相应参数时,数组为空;
    $_POST:接收post请求时传递的参数;
    $_GET:接收get请求时传递的参数;
    print_r($_GET);//print_r($_POST);
    form表单数据传递

    <?php
    //判断是否有输入值,如果没有输入则值为空;y有输入,那么value的值等于获取的参数值
    $value=isset($_GET['inp'])?$_GET['inp']:'';
    ?>
    <!--//如果action="do.php" 有值,则应该在相应页面获取参数值;-->
    <form action="" method="get">
        <input type="text" name="inp" value="<?=$value?>">
        <input type="submit">
    </form>
    <?php
    //无论是get方法还是post方法,都可以获取参数值;
    $data=$_GET;
    empty($data) && $data=$_POST;
    print_r($data);
    ?>
    

    数组相关函数

    创建数组:range(10,20);
    isset:判断数组是否有某个索引;
    unset:销毁某个变量;

    $number=range(10,20);//创建包含10至20之间数的数组,默认步长1;或者,range(20,10);
    $number=range(10,20,2);//第三个值是步长;
    $number=range(,'a','z',3);//英文字母也可以使用;

    截取数组array_slice(原数组,startIndex,长度,bool是否保留原下标)

    • 长度不写,从起始位置到最后;
      长度值为负,则表示截取到倒数第几个;
      startIndex为负,从倒数位数开始;
      $max=ceil(count($number)/n):最大页码
      PHP:
      intval(变量);将变量转为整型,第一位遇到非数字,转为0;
      ceil(3.6);向上取整;
      floor(3.6);向下取整;
      js:
      向下取整:Math.floor(3.6);//3;
      向上取整:Math.ceil(3.6);//4;
      <a href="?p=2"></a>:超链接传入参数

    分页

    select :向URL传参;
    <select onchange="location.href='?p='+this.value"><select>

    分页

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            ul{
                 list-style: none;
            }
            a{
                text-decoration: none;
                display: inline-block;width: 50px;
                height:30px;
            }
            li{
                display: inline-block;
                width:50px;
                height:30px;
                border-radius: 5px;
                background:#ccc;
                line-height:30px;
                text-align: center;
            }
        </style>
    </head>
    <body>
        <?php
            $number=range(1,30);
            $limit=4;//每页条数;
            $total=ceil(count($number)/$limit);//总页数
            $p=isset($_GET['p'])?$_GET['p']:1;//获取传入的值;
            $p=$p<1?1:$p;
            $p=$p>$total?$total:$p;//传入的页数大于最大页数,和小于1时做处理;
            $stat=($p-1)*$limit;//页面起始位置
            $page=array_slice($number,$stat,$limit);
        ?>
        <ul>
            <?php
            foreach( $page as $item){
                ?>
                <li><?=$item?></li>
            <?php
            }
            ?>
        </ul>
        <?php
            if($p!=1){
                ?>
                <span ><a href="?p=1">首页</a></span>
                <span ><a href="?p=<?=$p-1?>">上一页</a></span>
        <?
            }
            if($p!=$total){
                ?>
                <span ><a href="?p=<?=$p+1?>">下一页</a></span>
                <span ><a href="?p=<?=$total?>">尾页</a></span>
                 <?
            }
        ?>
    
        <select onchange="location.href='?p='+this.value">
            <?php
                for( $i=1;$i<=$total;$i++){
                    $selected=$i==$p?'selected':'';//$i是当前页面的话,选中当前页码;
            ?>
            <option value="<?=$i?>" <?=$selected?>><?=$i?></option>
                    <?php
                }
            ?>
        </select>
    </body>
    </html>
    

    数组的增删查改

    追加元素都是返回的数组的长度,删除元素都是返回删除的数组



    <pre>
    <?php
    $arr=array('a','b','c','d');
    $len=array_push($arr,123,456);//返回添加后数组的长度;添加多个,直接在后面加;也可以添加数组;
    print_r($arr);
    array_unshift($arr,'123');//在前面添加;
    print_r($arr);
    $elems=array_shift($arr);//删除前面第一个值;返回删除的元素;
    //print_r($elems);
    $elems=array_pop($arr);//删除前面最后一个值;返回删除的元素;
    print_r($elems);
    //$newArr=array_splice($arr,1,4);//返回删除的元素;
    //print_r($newArr);
    $newArr=array_splice($arr,1,1,[10,20]);//返回删除的元素;替换多个元素用数组
    print_r($newArr);
    $newArr=array_splice($arr,1,0,[4,5]);//追加元素,位置索引是1;没有移出数据,则返回空数组;
    print_r($arr);
    ?>
    </pre>
    

    相关文章

      网友评论

          本文标题:数组

          本文链接:https://www.haomeiwen.com/subject/lsafwttx.html