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