php03 数组篇

1.一维数组

php 是弱类型语言 没有一个函数去声明多维数组。so=> 多维数组的创建依赖于一维数组;

   一下是一维数组的创建

<?php
// php 数组
// 1. 数组申明4中方式
header("content-type:text/html;charset=utf-8");
$array1 = array(100,200,300,500,200); // 方式一
$array2 = array(0=>100,2=>200,3=>300,5=>500,4=>400); // 方式二
//方式三
$arry3[] = 0;
$arry3[] = 1;
$arry3[] = 2;
$arry3[] = 3;

//方式4
$array4['name'] = '张三';
$array4['age'] = 18;


var_dump($array1,$array2,$array4,$arry3);
#-----------------------------a
#数组的覆盖
# 增长数组下标都是数字
$array6 = [21,1212,121,4,54,654,765,12];
$array6[]=99;
$array6[]=889;
var_dump($array6);
$array7 = [77,888,999,34,23,5,568,7887];
for($i=0;i<count($array7);$i++){
    $array6[] = $array7[$i];
}
var_dump($array6);
#关联数组
$array9 = array('name'=>"关羽","age"=>600,'wh'=>"武圣");
#混合数组  下标既有数字 也有字符串;
$array10 = array('name'=>"关羽","age"=>600,'wh'=>"武圣",1000);






2.数组遍历:

#----------------------------

# for 循环只能遍历 索引数组

# foreach 循环遍历都能遍历

# while-each-list 循环遍历数组 都可以遍历

#each 循环 一条条数据  循环完后变为false

#list 只能循环 索引数组

<?php
header("content-type:text/html;charset=utf-8");
$arr = array("name"=>"许褚","age"=>700,"锤子");
echo $arr['name'];
#----------------------------
# for 循环只能遍历 索引数组
# foreach 循环遍历都能遍历
# while-each-list 循环遍历数组 都可以遍历
$arr1=array("12","333","4444");
$maxLength =  count($arr1)-1;
echo '</br>';
echo 12212;
echo '</br>';
echo count($arr1);
echo '</br>';
echo 444444444;
echo '</br>';
for($i=0;$i<=$maxLength;$i++){
    echo '下标'.$i.'=>'.$arr1[$i];
    echo '</br>';
}

foreach($arr1 as $k=>$v){
    echo  '下标'.$k.'=>'.$v;
}
#--------------------------------
#遍历循环数组
foreach($arr as $k=>$v){
    echo  '下标'.$k.'=>'.$v;
}
// while 
//while();
// each 从一个数组中获取一个元素 在可以给另一个遍历 这个时候的变量就是一个右:"获取的元素"的下标和值重新组成的一个新的数组;
echo "<h3 style='color:red'>while+each+list<h3>";
$arr10010 = array("name"=>"关羽",999,"青龙偃月刀");
$arry199 = each($arr10010);
var_dump($arry199);
$arry200 = each($arr10010);
var_dump($arry200);
$arry201 = each($arr10010);
var_dump($arry201);
echo '<hr>';
#list  只能循环索引数组;
list($value1) = $arr10010;
var_dump($value1);
echo '<h3>';
list($value1,$value2,$value3)=$arr10010;
var_dump($value1,$value2,$value2);
echo '<h3 style="color: red;">混合数组</h3>';
$arry999 = array("张三","sex"=>"男","age"=>58);
list($value1) = $arry999;
var_dump($value1);
echo '<h3>';
list($value1,$value2)=$arry999;
var_dump($value1,$value2);
list($value1,$value2,$value3)=$arry999;
var_dump($value1,$value2,$value3);
// 循环遍历
while(list($key,$value)=each($arry999)){
    echo "下标"."$key"."=>".$value."<br>";
}

3.常用的函数

   count(): 获取数组的长度

  is_array(): 检测某个变量是不是数组;

  var_dump(): 打印输出数组中的类型 长度 值;

  print_r(): 打印输出数组中的键值对;

  implode(): 通过一个分隔符 链接数组成一个字符串;

  explode(): 通过一个分割符把字 把字符串分割成数组;

  代码如下:   

<?php
header("content-type:text/html;charset=utf-8");
//    count(): 获取数组的长度
//   is_array(): 检测某个变量是不是数组;
//   var_dump(): 打印输出数组中的类型 长度 值;
//   print_r(): 打印输出数组中的键值对;
//   implode(): 通过一个分隔符 链接数组成一个字符串;
//   explode(): 通过一个分割符把字 把字符串分割成数组;


$arr = array("张飞","赵云","黄忠","关羽","马超");

$length = count($arr);
echo $length;

if(is_array($arr)){
    foreach($arr as $k=>$v){
        echo $v;
    }
}
//is_array 检测数组  是数组返回 true 不是数组是 false;
//   implode(): 通过一个分隔符 链接数组成一个字符串;
//   explode(): 通过一个分割符把字 把字符串分割成数组;
echo "<h3 style='color: red'>数组转字符串</h3>";
$str = implode(",",$arr);
echo $str;
echo '<hr>';
echo "<h3 style='color: red'>字符串转数组</h3>";
$test_arr = explode(",",$str);
var_dump($test_arr);



4. 多维数组

    不能直接去定义多维数组 可以通过一维数组 进行 组合得到多维数组;

<?php
#多维数组的定义
header("content-type:text/html;charset=utf-8");
$arry3 = array("张三","李四","王麻子");
$arry1 = array("name"=>"张三","age"=>500,"sex"=>"男");
$arry2 = array("name"=>"张丽丽","age"=>600,"sex"=>"女");
$arry = array($arry1,$arry2,$arry3);
var_dump($arry);
echo "<hr>";
$arry_100 = array(
    0=>array("name"=>"孙悟空","age"=>9999,"wh"=>"齐天大圣"),
    1=>array("name"=>"猪八戒","age"=>9999,"wh"=>"天棚大元帅"),
    2=>array("name"=>"沙悟净","age"=>9999,"wh"=>"京唐使者")
);
var_dump($arry_100);
echo '<hr>';

$arr_999 = array();
$arr_999[] = $arry1;
$arr_999[] = $arry2;
$arr_999[] = $arry3;
var_dump($arr_999);

5 :冒泡排序

        定义一个中间变量 用来存储;

        代码如下:

<?php
$array = [1,3,45,8,3,8798,6,23,12];
for($i=0;$i<count($array);$i++){
    for($j=0;$j<count($array)-1-$i;$j++){
        $temp="";
        if($array[$j]>$array[$j+1]){
            $temp = $array[$j];
            $array[$j] = $array[$j+1];
            $array[$j+1] = $temp;
        }
    }
}
var_dump($array);

6.选择排序

<?php
# 冒泡
$array = [1,3,45,8,3,8798,6,23,12];
// for($i=0;$i<count($array);$i++){
//     for($j=0;$j<count($array)-1-$i;$j++){
//         $temp="";
//         if($array[$j]>$array[$j+1]){
//             $temp = $array[$j];
//             $array[$j] = $array[$j+1];
//             $array[$j+1] = $temp;
//         }
//     }
// }
// var_dump($array);
#选择
for($i=0;$i<count($array); $i++){
     $max_index = $i;
     $max_value= $array[$i];
     for($j=$i+1;$j<count($array)-1;$j++){
        if($max_value<$array[$j]){
            $max_value = $array[$j];
            $max_index = $j;
        }
     }
    $array[$max_index] = $array[$i];
    $array[$i] = $max_value;
}
var_dump($array);

猜你喜欢

转载自blog.csdn.net/yhwcool/article/details/81661167