PHP基础-数组的使用方法

<?php
/**
 * Created by PhpStorm.
 */

//数组操作
$names = array("张三","李四","王五");   //一维数组
$names[3] = "刘翔";   //数组添加元素
$names[4] = "虾米大王";
echo "names[0] = ".$names[0]."<br>";  //索引值访问数组,默认从0开始
echo "names[1] = ".$names[1]."<br>";
echo "names[2] = ".$names[2]."<br>";
echo "names[3] = ".$names[3]."<br>";
echo "names[4] = ".$names[4]."<br>";

echo "<hr>";
echo "<pre>";
print_r($names);  //print_r专门用于输出数组
echo $names[0]." 和 ".$names[1]." 都是 ".$names[2]." 的小学同学,".$names[4]." 是他们的老师。";
echo "</pre>";

echo "<hr>";
$ages = array("张三"=>32,"李四"=>30,"王五"=>"34");  //key => value 一维数组
$ages['刘翔'] = 30;  //添加带key的数组元素
$ages["虾米大王"] = 31;
echo "<pre>";
print_r($ages);
echo "李四 现在有".$ages['李四']." 岁了。";  //使用key方式访问数组
echo "</pre>";
echo "<hr>";

$families = array(
    "brother"=>array("大明","二明","三明"),  // 多维数组
    "sister"=>array("MeiMei"),
    "uncle"=>array("张三","李四","王五")
);
echo "<pre>";
print_r($families);
echo "我有一个表妹,他的名字叫 ".$families['sister'][0];   //多维数组访问方式[key][0]
echo "</pre>";
echo "<hr>";

$seasons = array('1'=>'spring','2'=>'summer','3'=>'autumn','4'=>'winter');
echo "<pre>";
print_r($seasons);
echo "</pre>";
unset($seasons['2']); //删除数组元素方式
echo "<pre>";
print_r($seasons);
echo "</pre>";
echo "<hr>";

$stack = array('orange','banana');
echo "<pre>";
echo "原数组:";
echo "<br>";
print_r($stack);
array_push($stack,'apple','raspberry');  //将其他内容压入数组的方式
echo "入栈后的数组:"."<br>";
print_r($stack);
echo "</pre>";

echo "<hr>";
$stack = array("orange","banana","apple");
$stack[] = "raspberry";
echo "<pre>";
echo "原数组:<br>";
print_r($stack);
$fruit = array_pop($stack);  //从数组中删除最后一项的方式
echo "出栈后的数组:"."<br>";
print_r($stack);
echo "</pre>";
echo "<hr>";

$country = array('CHINA','KOREA',"AMERICA","JAPAN");
$count1 = count($country);
echo "使用for循环遍历数组:"."<br>";
for($i=0; $i<$count1; $i++)  //使用for循环遍历数组
{
    $j = $i + 1;
    echo "第{$j}个元素是:$country[$i]"."<br>";
}
echo "<hr>";

$country1 = array("CHINA","KOREA","AMERICA","JAPAN");
echo "1.使用foreach循环遍历数组:"."<br>";
foreach ($country1 as $value)  //使用foreach循环遍历一维数组
{
    echo "country1[ ] = $value"."<br>";
}
echo "<br>";

$country2 = array('C'=>'CHINA','K'=>'KOREA','A'=>'AMERICA','J'=>'JAPAN');
echo "2.使用foreach循环遍历数组:<br>";
foreach ($country2 as $key=>$value)  //使用foreach循环遍历带key的一维数组
{
    echo "country2[$key] = $value"."<br>";
}

echo "<hr>";

$country3 = array('Asia'=>array('CHINA','JAPAN'),
    'America'=> array('USA','CANADA'));
echo "3.使用foreach循环遍历数组:"."<br>";
foreach ($country3 as $key => $arr)  //使用foreach循环遍历多维数组
{
    foreach($arr as $value)
    {
        echo "counstry3[$key][ ]=".$value."<br>";
    }
}
echo "<br>";

$country4 = array("Asia"=>array("1"=>"CHINA","2"=>"JAPAN"),
    "America"=> array("1"=>"USA","2"=>"CANADA"));
echo "4.使用foreach循环遍历数组:"."<br>";
foreach ($country4 as $key=>$arr)  //使用foreach循环遍历带key的多维数组
{
    foreach($arr as $key1=>$value)
    {
        echo "country4[$key][$key1] = ".$value."<br>";
    }
}

echo "<hr>";

$fruit1 = array('lemon','banana','apple','orange');
echo "<pre>";
echo "原数组:"."<br>";
print_r($fruit1);
echo "使用sort()排序数组后:"."<br>";
sort($fruit1);  //排序数组
print_r($fruit1);
echo "</pre>";

echo "<hr>";

$fruit2 = array('asia','china','japan','korea');
echo "<pre>";
echo "原数组:"."<br>";
print_r($fruit2);
echo "使用rsort()排序数组后:"."<br>";
rsort($fruit2);  //反向排序数组
print_r($fruit2);
echo "</pre>";

echo "<hr>";

$test_array = array('first'=>'1','second'=>'2','third'=>'3','fourth'=>'4');
echo "<pre>";
echo "原数组:<br>";
print_r($test_array);
echo "使用shuffle()随机排序后的数组:"."<br>";
shuffle($test_array);  //使用shuffle会删除key值,然后随机排序数组
print_r($test_array);
echo "</pre>";

echo "<hr>";

$input = array('虾米大王',8.0,array('red','green','blue'));
echo "<pre>";
echo "原数组:<br>";
print_r($input);
$result = array_reverse($input); //使用array_reverse逆序排序数组,排序时删除key值,仅对第一维数组有效排序,其他维顺序保留不变。
echo "使用array_reverse()排序数组后:"."<br>";
print_r($result);
echo "使用array_reverse(&array,true)排序数组后:"."<br>";
$result_2 = array_reverse($input,true); //开启true参数,排序时保留key值
print_r($result_2);
echo "</pre>";

echo "<hr>";

$array_1 = array('颜色'=>'蓝色',2,4,'笔刷'=>'钢笔');
$array_2 = array("颜色"=>"红色","类型","虾米大王",4,"笔刷"=>"毛笔");
$array_3 = array_merge($array_1,$array_2); //合并数组是,如果有相同key值,则覆盖前一个的value,如果键key值为数字,则不覆盖。
echo "<pre>";
echo "array_1[]数组:<br>";
print_r($array_1);
echo "array_2[]数组:"."<br>";
print_r($array_2);
echo "使用array_merge()合并数组后:"."<br>";
print_r($array_3);
echo "</pre>";

echo "<hr>";
$fruit = array('苹果','桔子','西瓜','香蕉','葡萄','虾米大王');  //拆分数组
$output1 = array_slice($fruit,4);
$output2 = array_slice($fruit,2,3);
$output3 = array_slice($fruit,2,-2);
echo "<pre>";
echo "原数组fruit[]:"."<br>";
print_r($fruit);
echo "使用array_slice(),取第4个之后的数据:<br>";
print_r($output1);
echo "使用array_slice(),取第2个之后,长度3个的数据:"."<br>";
print_r($output2);
echo "使用array_slice(),取第2个之后,数组倒数第2个之前的数据:<br>";
print_r($output3);
$fruit1 = array('3'=>'苹果','4'=>'桔子','5'=>'西瓜','6'=>'香蕉');
$output4 = array_slice($fruit1,2,2,true);
$output5 = array_slice($fruit1,2,-1,true);
$output6 = array_slice($fruit1,2,2,false);
echo "<br>";
echo "原数组fruit1[]:"."<br>";
print_r($fruit1);
echo "使用array_slice(),取第2个之后,长度2个的数据,保留key值<br>";
print_r($output4);
echo "使用array_slice(),取第2个之后,数组倒数第1个之前的数据,保留key值"."<br>";
print_r($output5);
echo "使用array_slice(),取第2个之后,长度2个的数据<br>";
print_r($output6);
echo "</pre>";

echo "<hr>";

$teacher = array('虾米大王',30,'php程序员');
$student = array(
    array('学员张',20,'php学员'),
    array('学员王',21,'php学员'),
    array('学员李',23,'php学员'),
    array('学员赵',22,'php学员'),
    array('学员钱',25,'php学员'),
    array('学员孙',22,'php学员'),
    array('学员李',25,'php学员'),
    array('学员黄',24,'php学员'),
);

list($name,$age,$job) = $teacher; //list(变量) = 数组,仅对一维数组有效
echo "姓名:$name, 年龄:$age, 职业:$job"."<br>";

$arr_kv = each($student);  //each(数组),对多维数组有效
echo "<pre>";
echo "原数组:<br>";
print_r($student);
echo "each()后的数组:<br>";
print_r($arr_kv);
echo "</pre>";
echo "使用while()循环方式:<br>";
echo "<table border='1'>";
echo "<tr>";
echo "<th>姓名</th><th>年龄</th><th>专业</th>";
echo "</tr>";
while(list($key,$value) = each($student))   //while循环方式
{
    echo "<tr>";
    echo "<td>$value[0]</td> <td>$value[1]</td> <td>$value[2]</td>";
    echo "</tr>";
}
echo "</table>";

echo "<br>";

echo "使用for()循环方式:<br>";
echo "<table border='1'>";
echo "<tr>";
echo "<th>姓名</th><th>年龄</th><th>专业</th>";
echo "</tr>";
for($i=0; $i<count($student); $i++)
{
    echo "<tr>";
    echo "<td>{$student[$i][0]}</td> <td>{$student[$i][1]}</td> <td>{$student[$i][2]}</td>";
    echo "</tr>";
}
echo "</table>";

echo "<br>";

echo "使用foreach()循环方式:<br>";
echo "<table border='1'>";
echo "<tr>";
echo "<th>姓名</th><th>年龄</th><th>专业</th>";
echo "</tr>";
foreach($student as $k => $v)
{
    echo "<tr>";
    echo "<td>$v[0]</td> <td>$v[1]</td> <td>$v[2]</td>";
    echo "</tr>";
}
echo "</table>";








 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虾米大王

有你的支持,我会更有动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值