php基础一(数组)

<!-- PHP数组与数据结构 -->

<?php
// //     $arr = array('欢迎',10 => '学习',
// //         'php',
// //         19 => '语言','相信自己一定能学会'
// //     );
    
// //     $arr = array('刘亦菲',
// //         'anglebaby','鹿晗','范彬彬'
// //     );
    
//     $arr[0] = '北京';
//     $arr[1] = '上海';
//     $arr[2] = '广州';

//     $arr = array('0' => '小明',
//         '1' => '小龙',
//         '2' => '小花',
//         '3' => '小兰'
//     );
    
//     $arr = [
//         ['南宁','崇左','凭祥','桂林','百色'],
//         ['龙州','武鸣','宁明','大兴','苹果']
//     ];
    
//     $arr = array(
//         array('南宁','崇左','凭祥','桂林','百色'),
//         array('龙州','武鸣','宁明','大兴','苹果')
//     );
    
//     echo '<pre>';
//     echo count($arr);die;
//     var_dump($arr[2]);
//     echo '</pre>';
?>

<?php
    $num = array('南宁','崇左','凭祥','桂林','百色');
    for ($i = 0;$i < count($num);$i++){
        echo $num[$i].'<br />';
    }
    unset($num[1]);
    var_dump($num);
    
    $name = array(
        'name1' => '芙蓉',
        'name2' => '凤姐'
    );
    foreach ($name as $key => $value){
        echo $key.'——————'.$value.'<br />';
    }
    
    $city = array(
        0 => array(
            '南宁' => 'nanning',
            '百色' => 'baise',
            '凭祥' => 'pingxing'
    ),
       1 => array(
            '广州' => 'guangzou',
            '深圳' => 'shengzheng',
            '东莞' => 'dongguan'
    )
    );
    foreach ($city as $value){
        foreach ($value as $k => $v){
            echo $k.'—'.$v.'<br />';
        }
    }
    
    list($one,$two,$three) = array('张三','李四','王五');
    echo '$one----'.$one.'<br />';
    echo '$two----'.$two.'<br />';
    echo '$three--'.$three.'<br />';
    
    $kongjie = [
        'gao' => '黑丝',
        'lian' => '很白',
        'tui' => '很细',
        'wuguan' => '精致',
        'shengyin' => '甜美',
    ];
    $date = each($kongjie);
    echo '<pre>';
    var_dump($date);
    echo '<pre>';
    list($one,$two) = each($kongjie);
    echo $one.'-'.$two.'<br />';
    
    $minggren = array("邓超","黄晓明","泞泽涛","钟汉良");
    $dc = array_shift($minggren);//删除数组开头第一个单元
    array_unshift($array, $value1);//数组开头插入一个或多个单元
    array_push($array, $value1);//将一个或多个单元压入数组末尾
    array_pop($array);//删除数组末尾单元,并长度减一
    current($array);//返回数组中的当前单元
    key($array);//从关联数组中取得键名
    next($array);//将数组中的内部指针向前(数组的下一个元素)移动一位
    prev($array);//将数组的内部指针倒回一位(从当前位置指向上一个元素)
    reset($array);//返回数组中第一个元素位置
    end($array);//指向数组最后一个元素位置
    print_r($minggren);//打印出函数结构
    
    //php数组常用函数
    array_combine($keys, $values);//创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值  
    range($start, $end);//根据范围创建数组,包含指定的元素
    compact($varname1);//建立一个数组,包括变量名和它们的值
    array_fill($start_index, $num, $value);//用给定的值填充数组
    array_chunk($array, $size);//将一个数组分割成多个
    array_merge($array1);//合并一个或多个数组
    array_slice($array, $offset, $length, $preserve_keys);//从数组中取出一段
    array_diff($array1, $array2);//计算数组的差集
    array_search($needle, $haystack);//在数组中搜索给定的值,如果成功则返回首个相应的键名
    array_splice($input, $offset ,$length, $replacement);//去掉数组中的某一部分并用其它值取代
    array_sum($array);//对数组中所有值求和
    in_array($needle, $haystack);//检查数组中是否存在某个值
    array_key_exists($key, $array);//检查数组里是否有指定的键名或索引
    shuffle($array);//打乱数组
    count($array_or_countable);//数组长度
    array_flip($array);//交换数组中的键和值
    array_keys($array);//返回数组中部分的或所有的键名
    array_values($array);//返回数组中所有的值
    array_reverse($array);//返回单元顺序相反的数组
    array_count_values($array);//统计数组中所有的值
    array_rand($array);//从数组中随机取出一个或多个单元
    array_unique($array);//移除数组中重复的值
    sort($array);//对数组排序(从低到高)
    rsort($array);//对数组逆向排序(从高到低)
    asort($array);//对数组进行排序并保持索引关系(按字母顺序)
    arsort($array);//对数组进行逆向排序并保持索引关系
    ksort($array);//对数组按照键名排序(按字母顺序)
    krsort($array);//对数组按照键名逆向排序
    natsort($array);//用"自然排序"算法对数组排序
    natcasesort($array);//用"自然排序"算法对数组进行不区分大小写字母的排序
    array_filter($array);//用回调函数过滤数组中的单元
    extract($array, $flags, $prefix);//从数组中将变量导入到当前的符号表
    
?>
<!-- 数组练习题 -->


<?php
// 1.将数组的键名全部转换成小写和大写的函数是什么?
// 答:array_change_key_case($array [,CASE_LOWER|CASE_UPPER])

// 2.创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值的函数是什么?
// 答:array array_combine ( array $keys , array $values )

// 3.统计数组中所有的值出现的次数的函数是什么?
// 答:array array_count_values ( array $input )

// 4.返回数组中部分的或所有的键名的函数是什么?
// 答:array array_key($array [,$search_value [,true|false]])

// 5.将回调函数作用到给定数组的单元上的函数是什么?
// 答:array array_map ( callable $callback , array $arr1 [, array $... ] )

// 6.合并一个或多个数组的函数是什么?
// 答:array array_merge ( array $array1 [, array $... ] )

// 7.将数组最后一个元素弹出的函数是什么?
// 答:mixed array_pop ( array &$array )

// 8.将一个或多个单元压入数组的末尾(入栈)的函数是什么?
// 答:int array_push ( array &$array , mixed $var [, mixed $... ] )

// 9.从数组中随机取出一个或多个单元的函数是什么?
// 答:mixed array_rand ( array $input [, int $num_req = 1 ] )

// 10.返回一个单元顺序相反的数组的函数是什么?
// 答:array array_reverse ( array $array [, bool $preserve_keys = false ] )

// 11.在数组中搜索给定的值,如果成功则返回相应的键名的函数是什么?
// 答:array_search ( mixed $needle , array $haystack [,$strict = false ] )

// 12.将数组开头的单元移出数组的函数是什么?
// 答:mixed array_shift ( array &$array )

// 13.移除数组中重复的值的函数是什么?
// 答:array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )

// 14.在数组开头插入一个或多个单元的函数是什么?
// 答:int array_unshift ( array &$array , mixed $var [, mixed $... ] )

// 15.返回数组中所有的值的函数是什么?
// 答:array array_values ( array $input )

// 16.对数组进行逆向排序并保持索引关系的函数是什么?
// 答:bool arsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

// 17.对数组进行正向排序并保持索引关系的函数是射门?
// 答:bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

// 18.返回数组中当前的键/值对并将数组指针向前移动一步的函数是什么?
// 答:array each ( array &$array ),例如:while(list($key,$value)=each($array)){}

// 19.对数组按照键名逆向排序的函数是什么?
// 答:bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

// 20.对数组按照键名正向排序的函数是什么?
// 答:bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

// 21. 对数组逆向排序的函数是什么?
// 答:bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

// 22.对数组正向排序的函数是什么?
// 答:bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

// 23.将数组打乱的函数是什么?
// 答:bool shuffle ( array &$array )

// 24.count() 的别名函数是什么?
// 答:sizeof()

// 25.将变量转换成数组的函数是什么?
// 答:compact();例如:$user='zong';$pwd=123;compact('user','pwd')结果为array('user'=>'zong','pwd'=>123)

//26.写函数创建长度为10的数组,数组中的元素为递增的奇数,首项为1
    function arrsort($first,$length){
        $arr = array();
        for ($i=0;$i<=$length;$i++){
            $arr[] = $i*2-1;
        }
        return $arr;
    }
    $arr1 = arrsort(1, 10);
    var_dump($arr1);
//27.创建长度为10的数组,数组中的数为递增的等比数,比值为3,首项为1
    function arrsort1($first,$length,$num){
        for ($i=$first;$i<=$length;$i++){
            $arr[] = $num*pow($num, $i-2);
        }
        return $arr;
    }
     $arr1 = arrsort1(1, 10,3);
     var_dump($arr1);
 //28.求数组中最大数的下标
    function maxkey($arr){
        $maxval = max($arr);
        foreach ($arr as $key=>$val){
            if ($maxval == $val){
                $maxkey = $key;
            }
        }
        return $maxkey;
    }
    $arr = array(0,-1,-2,5,"b"=>15,3);
    echo maxkey($arr);
//29.创建一个长度为10的数组,数组中的元素满足斐波那契数列的规律
    function arrFibo($len){
        $arr[0] = 0;
        $arr[1] = 1;
        for ($i=2;$i<$len;$i++){
            $arr[$i] = $arr[$i-1]+$arr[$i-2];
        }
        return $arr;
    }
    echo "<pre>";
    print_r(arrFibo(10));
    echo "</pre>";
//30.计算数组中最大数和最小数的差
//     max/min
    function arrsub($arr){
        sort($arr);
        $min = $arr[0];
        rsort($arr);
        $max = $arr[0];
        $sub = $max - $min;
        return $sub;
    }
    $arr = array(-1,-2,100);
    echo arrsub($arr);
//31.写一个方法,将一个长度超过10的数组最后5项直接截取,不改变顺序变为前5项,
//如{1,2,3,4,5,6,7,8,9,10}变为{6,7,8,9,10,1,2,3,4,5}.
    function arrsort2($arr){
        $num = count($arr);
        if ($num > 10) {
            $arr_firstpart = array_slice($arr, 0,$num-5,true);
            $arr_lastpart = array_slice($arr, ($num-5),5,true);
        }else {
            echo "数组不超过10个元素,请重新输入";
            exit;
        }
        $arr_new = array_merge($arr_firstpart,$arr_lastpart);
        return $arr_new;
    }
    $arr = array("a" => 1,2,3,8,9,6,"b"=>5,-1,"c"=>8,0,7);
    echo "<pre>";
    print_r($arr);
    echo "<br>= = = = = 拼接后 = = = =<br><br>";
    print_r(arrsort2($arr));
    echo "</pre>";
//32.将两个数组连接成一个新数组
    $arr = array("a"=>1,"b"=>2,3);
    $arr2 = array("a"=>Dee,3,5);
    $arr3 = array_merge($arr,$arr2);
    $arr4 = array_merge_recursive($arr,$arr2);
    echo "<pre>";
    print_r($arr3);
    echo "<br>= = = = =<br><br>";
    print_r($arr4);
    echo "</pre>";
//32.1第一个输出的数组中索引为"a"的值1被第二个数组中索引为"a"的值Dee覆盖了
    function arrsort3($arr1,$arr2){
        $arr_new = $arr1;
        foreach ($arr2 as $key=>$val){
            $arr_new[] = $val;
        }
        return $arr_new;
    }
    $arr1 = array("a"=>1,"b"=>2,3);
    $arr2 = array("a"=>Dee,"c"=>3,5);
    echo "<pre>";
    print_r(arrsort3($arr1,$arr2));
    echo "</pre>";
//33.数组的逆序(不能使用rsort函数,不能生成新数组)
    $arr = array("a","b","c",1,10);
    $i="";
    $j="";
    $k="";
    $len = count($arr);
    $half_len = floor($len/2);
    for ($i=0;$i<$half_len;$i++){
        $j=$arr[$i];
        if ($len%2!=0) {
            $k = $half_len*2-$i;
        }else {
            $k = $half_len*2-$i-1;
        }
        $arr[$i]=$arr[$k];
        $arr[$k]=$j;
    }
    echo "<pre>";
    print_r($arr);
    echo "</pre>";
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值