数组

数组

1.初识数组

思考:如何保存一个班级的所有学生、一个公司的全部员工等的相关信息
回答:一种方法,利用前面学习过的知识,则每一条信息都需要一个变量去保存,缺点是这样做很麻烦,而且容易出错,又不合理;另一种方法就是利用数组。
概念:数组就是一个可以存储一组或一系列数值的变量。
数组构成:数组是由一个或多个数组元素组成的
数组元素:一每个数组元素由键(Key)和值(Value)构成
:“键”为元素的识别名称,也被称为数组下标
: “值”为元素的内容
映射: “键”和“值”之间存在一种对应关系,称之为映射
类型划分:根据键的数据类型,可以将数组划分为索引数组和关联数组,前者使用数字作为键,后者使用字符串作为键。

索引数组

索引数组是指键名为整数的数组。默认情况下,索引数组的键名是从0开始,并依次递增。它主要适用于利用位置(0、1、2……)来标识数组元素的情况。另外,索引数组的键名也可以自己指定。

关联数组

关联数组是指键名为字符串的数组。通常情况下,关联数组元素的“键”和“值”之间有一定的业务逻辑关系。因此,通常使用关联数组存储一系列具有逻辑关系的变量。关联数组的“键”都是字符串,并与“值”之间具有一一对应的关系。

数组
数组
数组
数组
数组
数组
数组

另外,若要一次查看数组中的所有元素,则可以利用前面学习过的输出语句函数print_r()和var_dump(),并且通常情况下为了使输出的函数按照一定的格式打印,查看时经常与pre标记一起使用。

数组
数组
数组

数组删除

在数组定义完成后,有时也需要根据实际情况去除数组的某个元素。

例如,一个保存全班学生信息的多维数组,若这个班级中有一个学生转学了,那么在这个班级学生信息管理中就需要删除此学生。此时,可以使用PHP提供的unset()函数完成数据的删除。

   //关联数组
       $arr=array('id'=>'10010','name'=>'hi','tel'=>'10010');
       
        //索引数组
        $arr1=array(6=>'a',4,5,6,8=>'b');
        
    //混合数组
            $arr2=array(1=>'a','name'=>'hi',2);
    echo '<pre>';
        var_dump($arr);
        var_dump($arr1);
        var_dump($arr2);
    echo '</pre>';

    //遍历数组
    $info = ['id' => 1, 'usr' => 'Jacie', 'age' => 18];
    foreach($info as $k=>$v){
        echo $k.':'.$v.'<br/>';
    }
foreach($info as $v){
        echo $v.'<br/>';
    }
    
    //数组删除 unset
            $info = ['id' => 1, 'usr' => 'Jacie', 'age' => 18];
    unset($info['usr']);
    print_r($info);
    
     //数组联合
    $fruit_1=array(1=>'apple',2=>'banner');
    $fruit_2=array(1=>'orange',2=>'lemon',3=>'a');
    $fruit=$fruit_1+$fruit_2;
    echo '<pre>';
    var_dump($fruit);
    echo '<pre/>';

//数组联合规则:array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

    //二维数组
    
    $date=array(
        1=>array('one'=>'first'),
        2=>array('two'=>'send'),
        3=>array('three'=>'third'),
    );
        echo '<pre>';
        print_r($date); 
        echo '<pre/>';
        $arr = array(12,32,15,6,48,52,16,95,78);
    for($i=0;$i<count($arr);$i++){
        for($j=$i;$j<count($arr);$j++){
            if($arr[$i]>$arr[$j]){
                $tel=$arr[$j];
                $arr[$j]=$arr[$i];
                $arr[$i]=$tel;
            }
        }
    }

//    echo '<pre>'; 
//    var_dump ($arr);
//    echo '<pre/>' 


    foreach ($arr as $v) {
        echo $v . ' ';	
    }

数组

数组

3.数组查找

数组
数组
数组

4.数组排序

冒泡排序

冒泡排序:是计算机科学领域中较简单的排序算法。
实现原理:按照要求从小到大排序或从大到小排序,不断比较数组中相邻两个元素的值,较小或较大的元素前移。冒泡排序比较的轮数是数组长度减1,每轮比较的对数等于数组的长度减当前的轮数。
缺点:冒泡排序的效率很低,在实际中使用较少。
数组

5.数组的常用函数

数组
数组
数组

list()结构可将给定数组中的元素依次赋值给list小括号内从左到右定义的变量。
each()函数在获取到了当前元素的键和值后,会自动将数组的指针指向下一个元素,直到没有数组元素时返回NULL。

数组
数组
数组
数组
数组
数组
数组
数组

5.数组在字符串与函数中的应用

PHP提供的explode()函数用于根据指定字符对字符串进行分割 explode()函数的返回值类型是数组类型 第1个参数表示分隔符
第2个参数表示要分割的字符串
第3个参数是可选的,表示返回的数组中最多包含的元素个数,当其为负数m时,表示返回除了最后的m个元素外的所有元素,当其为0时,则把它当做1处理

数组

PHP提供的implode()函数用于利用指定字符将一维数组内的元素值连接成字符串
implode()函数的返回值类型为字符串型
第1个参数表示连接字符串
第2个参数表示待转换的数组。其中,不论指定字符是否存在,只要第2个参数是空数组,结果都为空字符串。
值得一提的是,由于历史原因,该函数的第1个参数可以省略。

数组
数组
数组
数组

将数组作为参数调用函数

在PHP中,call_user_func_array()函数可以实现回调函数的调用,并将一个数组作为回调函数的参数。回调函数执行后,其返回值将作为call_user_func_array()函数的返回值进行返回。
数组