您的位置:首页 > 编程语言 > PHP开发

PHP 数组

2016-03-25 16:17 429 查看
1.第一种创建方式

//-------------创建数组--------------------
$hens[0]=5;
$hens[1]=3;
$hens[2]=5;
$hens[3]=1;
$hens[4]=3.4;
$hens[5]=2;
$hens[6]=50;
//----------------------------------------
$allWeight=0;
for($i=0;$i<count($hens);$i++){
echo "第".($i+1)."只鸡的体重为:".$hens[$i]."<br/>";
$allWeight+=$hens[$i];
}
echo '总体重为:' .$allWeight."<br/>";
echo '平均体重为:'.$allWeight/count($hens);


2.第二种创建方式

$hens=array(5,3,2,3.4,50,"hello");
//--------------for循环--------------------
for($i=0;$i<count($hens);$i++){
echo "<br/>".$hens[$i];
}
//------------foreach遍历-------------------
foreach($hens as $value){
echo "<br/> Value:".$value;
}


3.第三种创建方式

//在默认情况下,元素下标是从0开始编号的,但也可以指定。
$arr['logo']="北京";
$arr['hsp']=123;
//或者
$arr=array("logo"=>"北京","hsp"=>123);

$arr['logo']="北京";
$arr['hsp']=123;
$arr[0]="hello";
foreach($arr as $key=>$value){
echo "<br>".$key."=".$value;
}
//--------注意事项-------
/*如果创建一个数组的时候,没有给某个元素指定下标,
php就会自动用目前最大的下标值(整数)+1作为该元素的下标*/
$arr=array(5=>"logo",567,8);
echo $arr[5];
echo "<br/>".$arr[6];//567
echo "<br/>".$arr[7];//8
/*如果给某个元素的下标一样,则会覆盖原来的值*/
$arr=array(5=>"logo",567,8);
$arr[6]="yes";
echo "<br/>".$arr[5];
echo "<br/>".$arr[6];//567被替换成yes
echo "<br/>".$arr[7];


//---------php里,数组可以动态增加--------------
$a=array(23,5);
$a[2]=6;//将此添加进数组
echo "<br/>".$a[2]."<br/>";//array(23,5,6)
/*$数组名[键值];
如果写的键值不存在,则会报告;Notice:Undefined offset*/


//------------is_array()--------
$arr=array("12",35);
echo is_array($arr);//返回布尔值
$a="hello";
echo is_array($a)."<br/>";//返回空串,在php相当于假


//-------------------拆分字符串explode--------------------
$str="北京*天津*上海*hello";
$ar=explode("*",$str);
print_r($ar);


得出结果:

Array ( [0] => 北京 [1] => 天津 [2] => 上海 [3] => hello )

//----------unset()函数-----------------
$arr[0]=123;
$arr[1]=44;
$arr[2]=856;
echo $arr[1]."<br/>";
unset($arr[1]);
echo $arr[1];

$a=array(12,45,466);
print_r($a);
unset($a[1]);
echo "<br/>";
print_r($a);


得出的结果为:

44

Array ( [0] => 12 [1] => 45 [2] => 466 )

Array ( [0] => 12 [2] => 466 )

删除后,仍然占数组的键名,但是没有键值

//---------------数组相加-----------------------------
/*+运算把右边的数组元素(除去键值与左边的数组元素相同的那些元素)
附加到左边的数组后面,但是重复的键值不会被覆盖*/
$a=array("a"=>"apple","b"=>"banana");
$b=array("a"=>"pear","b"=>"strawberry","c"=>"pine");
$c=$a+$b;//a=>apple,b=>banana,c=>pine
$d=$b+$a;//a=>pear,b=>strawberry,c=>pine
var_dump($c);
var_dump($d);


冒泡排序

$arr=array(0,10,5,20,18,17);
//这是一个中间变量
$temp=0;
//外层循环
for($i=0;$i<count($arr);$i++){
for($j=0;$j<count($arr)-1-$i;$j++){
//说明前面的数比后面的大,需要交换
if($arr[$j]>$arr[$j+1]){
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
}

}
}
//输出
print_r($arr);


得出结果为:

Array ( [0] => 0 [1] => 5 [2] => 10 [3] => 17 [4] => 18 [5] => 20 )

二维数组

$arr=array(
array(0,0,0,0,0,0),
array(0,0,1,0,0,0),
array(0,2,0,3,0,0),
array(0,0,0,0,0,0)
);
//遍历二维数组(行)
for($i=0;$i<count($arr);$i++){
//遍历每行的数据
for($j=0;$j<count($arr[$i]);$j++){
echo $arr[$i][$j]." ";
}
echo "<br/>";
}


得出结果:

0 0 0 0 0 0

0 0 1 0 0 0

0 2 0 3 0 0

0 0 0 0 0 0

//------------------矩阵转置(二维数组)-----------------
$arr=array(array(1,2,3),array(4,5,6));
for($i=0;$i<count($arr);$i++){
for($j=0;$j<count($arr[$i]);$j++){
echo $arr[$i][$j]." ";
}
echo "<br/>";
}
echo "矩阵转置后:<br/>";
for($i=0;$i<count($arr);$i++){
for($j=0;$j<count($arr[$i]);$j++){
$arr1[$j][$i]=$arr[$i][$j];
}
}
for($j=0;$j<count($arr1);$j++){
for($i=0;$i<count($arr1[$j]);$i++){
echo $arr1[$j][$i]." ";
}
echo "<br/>";
}


转置前数组为:

1 2 3

4 5 6

矩阵转置后:

1 4

2 5

3 6
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: