PHP数组

range函数

$numbers=range(1,10,2);
//建立一个110的数组,步长为2

关联数组

$arr3=array('tag' => 30,'here' => 50,'there' => 35);
//最简单的访问方式
echo $arr3['tag'];

//循环便利关联数组
                foreach($arr3 as $key => $value){
                    echo $key."  -  ".$value."<br/>";
                }

                reset($arr3);
                while($element = each($arr3)){
                    echo $element['key']."  -  ".$element['value']."<br/>";
                }

                reset($arr3);
                while(list($name,$price) = each($arr3)){
                    echo $name."  -  ".$price."<br/>";
                }

多维数组

                //多维数组和多维关联数组的定义和遍历
                $test=array(
                    array('this','thiss',100),
                    array('that','thatt',200),
                    array('there','theree',300)
                );


                for($row=0;$row<3;$row++){
                    for($column=0;$column<3;$column++){
                        echo '|'.$test[$row][$column];
                    }
                    echo "<br/>";
                }


                $test2=array(
                    array(
                        'name'=>'jack',
                        'age'=>'18',
                        'sex'=>'man'
                    ),
                    array(
                        'name'=>'jack2',
                        'age'=>'182',
                        'sex'=>'man2'
                    ),
                    array(
                        'name'=>'jack3',
                        'age'=>'183',
                        'sex'=>'man3'
                    )
                );

                for($row=0;$row<3;$row++){
                    echo '|'.$test2[$row]['name'].'|'.$test2[$row]['age'].'|'.$test2[$row]['sex']."<br/>";
                }


                echo "<br/><hr/>";

                reset($test2);
                for($row=0;$row<3;$row++){
                    while(list($key,$value)=each($test2[$row])){
                        echo '|'.$value."*";
                    }
                    echo "<br/>";
                }

数组排序

//如果是字母会按照字母顺序排序,大写字母排序在小写字母之后
//如果是数字,按照从小到大排序
$arr5=array("c","z","a");
$arr5=array(10,5,3);
sort($arr5);


$arr4=array('tag' => 30,'here' => 50,'there' => 35);
//对于关联数组,按照值排序,升序
asort($arr4);
//按照键进行排序,升序
ksort($arr4);


//对应上面的排序,都有一个相反的排序方法
sort--》rsort降序排序
asort--》arsort
ksort--》krsort



//多维数组的排序
                $test=array(
                    array('this','c',800),
                    array('that','d',200),
                    array('there','a',300)
                );

                //按照价格也就是第三个参数进行排序,升序
                function compare($x,$y){
                    if($x[2]==$y[2]){
                        return 0;
                    }else if($x[2]<$y[2]){
                        return -1;
                    }else{
                        return 1;
                    }
                }

                usort($test,"compare");

//shuffle函数,随机排序函数
shuffle($arr5);

//反序一个数组,返回一个内容与参数数组相同,但是顺序相反的数组。
array_reverse($arr5);

从文件载入数组

            @$fp=fopen("$DOCUMENT/order.txt","rb");

            //file函数将文件中每一行作为数组的一个元素
            $order =file("$DOCUMENT/order.txt");
            //count函数用来统计数组的长度
            $number_order=count($order);
            if($number_order==0){
                echo "no order !!!";
            }
            for($i=0;$i<$number_order;$i++){
                echo $order[$i]."<br/>";
            }


            //按照表格输出,每一行还可以进行分割
            //文件中的数据样式
            //oil   0    tree   4    tag    2    wheel  2    total  44   地址     china
            if($number_order==0){
                echo "no order !!!";
            }

            echo "<table border='1'>\n";
            echo "<tr><th bgcolor='#ccccff'>oil</th>
                      <th bgcolor='#ccccff'>tree</th>
                      <th bgcolor='#ccccff'>tag</th>
                      <th bgcolor='#ccccff'>wheel</th>
                      <th bgcolor='#ccccff'>total</th>
                      <th bgcolor='#ccccff'>address</th></tr>";

            for($i=0;$i<$number_order;$i++){
                //explode分割函数,将按照\t分割第二个参数的字符串
                $line=explode("\t",$order[$i]);
                //intval将分割的数值型字符串转为数字,例如“321”转为321
                $line[1]=intval($line[1]);
                $line[3]=intval($line[3]);
                $line[5]=intval($line[5]);
                $line[7]=intval($line[7]);
                $line[9]=intval($line[9]);


                echo "<tr>
                        <td>$line[1]</td>
                        <td>$line[3]</td>
                        <td>$line[5]</td>
                        <td>$line[7]</td>
                        <td>$line[9]</td>
                        <td>$line[11]</td>
                        </tr>";


            }

            echo "</table>"  ; 

其他常用的数组操作函数

//在指针前移一个位置之前返回当前元素
each();
//返回当前指针指向的元素
current();
//将数组指针重置,指向第一个元素,返回第一个元素
reset();
//将数组指针指向最后一个元素,返回最后一个元素
end();
//将指针前移一个位置,并且返回移动之后的元素
next();
//和current函数一致,返回当前元素
pos();
//将指针回移一个位置,返回新元素
prev();

统计数组元素函数

//返回数组中元素的个数
count();
//返回数组中元素的个数
sizeof();
//对数组中每个关键字出现的次数进行统计
array_count_values();


            $array=array(4,5,3,2,6,8,2,1,2,1,3,1);
            $ac=array_count_values($array);

            foreach($ac as $key => $value){
                echo $key."-----"."$value"."<br/>";
            }

4-----1
5-----1
3-----2
2-----3
6-----1
8-----1
1-----3

对数组中的每一个元素应用任何函数array_walk

对数组中的每一个元素都应用自定义的函数进行处理,可以实现很多功能

            $array=array(4,5,3,2,6,8,2,1,2,1,3,1);
            function my_print($value){
                echo $value."<br/>";
            }

            array_walk($array,'my_print');

walk_array(value,key,userdata);
该函数包含三个参数,第三个参数可选,第一个参数为要操作的数组,第二个参数为自定义的处理函数,第三个参数为参数传递,做一些特殊处理。

将数组转换成标量变量extract()

                //经过这样转换就可以直接访问键进行输出
                $arr4=array('tag' => 30,'here' => 50,'there' => 35);
                extract($arr4);
                echo "$tag  $here $there";

函数原型如下

extract(array [, int extract_type] [, string prefix]);
  • 第一个参数为操作的数组,必选
  • 第二个参数将告诉函数如何处理冲突,可能存在一个和数组关键字同名的变量,默认操作覆盖已有变量,最常用的是EXTR_OVERWRITE(默认值)和EXTR_PREFIT_ALL在所有变量名称之前添加prefix前缀,必须提供prefix参数
  • 第三个参数,给你定义的标量添加一个前缀,避免冲突’
                //实现的功能和上面的代码一直,就是输出相应的值
                $arr4=array('tag' => 30,'here' => 50,'there' => 35);
                extract($arr4,EXTR_PREFIX_ALL,'my');
                echo "$my_tag  $my_here $my_there";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值