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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章