PHP 基础知识-数组

PHP 的数组主要分为:

  • 索引数组 - 带有数字索引的数组
  • 关联数组 - 带有指定键的数组
  • 多维数组 - 包含一个或多个数组的数组         
索引数组:
有两种创建索引数组的方法:

  索引是自动分配的(索引从 0 开始):

  第一种:

$cars=array("Volvo","BMW","SAAB");
第二种:
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="SAAB";
获取数组长度的函数:
count() 函数用于返回数组的长度(元素数):
示例:
<?php
$cars=array("Volvo","BMW","SAAB");
echo count($cars);
?>

遍历索引数组

如需遍历并输出索引数组的所有值,您可以使用 for 循环,就像这样:

<?php
$cars=array("Volvo","BMW","SAAB");
$arrlength=count($cars);for($x=0;$x<$arrlength;$x++) {
echo $cars[$x];
echo "<br>";
}
?>

PHP 关联数组

关联数组是使用您分配给数组的指定键的数组。

有两种创建关联数组的方法:

第一种:

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
第二种:
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
运行示例:
<?php
$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>

遍历关联数组

如需遍历并输出关联数组的所有值,您可以使用 foreach 循环,就像这样:

实例:

<?php
$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");foreach($age as $x=>$x_value) {
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
//定义数组和向数组中增加一个新的索引数组元素
<?php
$array = array("a", "b","c"); //定义数组
$array[] = "Simon"; //增加一个新的数组元素
print_r($array); //输出数组
?>
//定义一个新的索引数组并向数组得中指定位置中添加一个新的元素
<?php
$array = array("a", "b","c"); //定义数组
$array[9] = "Simon"; //增加一个新的数组元素
print_r($array); //输出数组
?>
<?php
//创建一个简单的数组
$array = array(0=>1, 1=>2, 2=>3, 3=>4, 6=>5);
print_r($array);
//现在把数组中键为2的值更新为100
$array[2] = 100;
print_r($array);
//现在添加一个键
$array["X"] = 50;
print_r($array);
//现在删除所有键,但保持数组本身的结构
foreach($array as $i => $value)
{
unset($array[$i]);
}
print_r($array);
//再添加一个键
$array[] = 25;
print_r($array);
//使用array_values函数进行重新索引
$array = array_values($array);
$array[] = 13;
print_r($array);
?>

 

一、数组操作的基本函数
数组的键名和值
array_values($arr);  获得数组的值
array_keys($arr);  获得数组的键名
array_flip($arr);  数组中的值与键名互换(如果有重复前面的会被后面的覆盖)
in_array("apple",$arr);  在数组中检索apple
array_search("apple",$arr);  在数组中检索apple ,如果存在返回键名
array_key_exists("apple",$arr);  检索给定的键名是否存在数组中
isset($arr[apple]):   检索给定的键名是否存在数组中数组的内部指针
current($arr);  返回数组中的当前单元
pos($arr);  返回数组中的当前单元
key($arr);  返回数组中当前单元的键名
prev($arr);  将数组中的内部指针倒回一位
next($arr);  将数组中的内部指针向前移动一位
end($arr);  将数组中的内部指针指向最后一个单元
reset($arr;  将数组中的内部指针指向第一个单元
each($arr);  将返回数组当前元素的一个键名/值的构造数组,并使数组指针向前移动一位
list($key,$value)=each($arr);  获得数组当前元素的键名和值数组和变量之间的转换
extract($arr);用于把数组中的元素转换成变量导入到当前文件中,键名当作变量名,值作为变量值
注:(第二个参数很重要,可以看手册使用)使用方法 echo $a;
compact(var1,var2,var3);用给定的变量名创建一个数组二、数组的分段和填充
数组的分段
array_slice($arr,0,3);  可以将数组中的一段取出,此函数忽略键名
array_splice($arr,0,3,array("black","maroon"));  可以将数组中的一段取出,与上个函数不同在于返回的序列从原数组中删除分割多个数组
array_chunk($arr,3,TRUE);  可以将一个数组分割成多个,TRUE为保留原数组的键名数组的填充
array_pad($arr,5,'x');  将一个数组填补到制定长度三、数组与栈
array_push($arr,"apple","pear");  将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素的个数
array_pop($arr);  将数组栈的最后一个元素弹出(出栈)四、数组与列队
array_shift($arr);数组中的第一个元素移出并作为结果返回(数组长度减1,其他元素向前移动一位,数字键名改为从零技术,文字键名不变)
array_unshift($arr,"a",array(1,2));在数组的开头插入一个或多个元素五、回调函数
array_walk($arr,'function','words');  使用用户函数对数组中的每个成员进行处理(第三个参数传递给回调函数function)
array_mpa("function",$arr1,$arr2);  可以处理多个数组(当使用两个或更多数组时,他们的长度应该相同)
array_filter($arr,"function");  使用回调函数过滤数组中的每个元素,如果回调函数为TRUE,数组的当前元素会被包含在返回的结果数组中,数组的键名保留不变
array_reduce($arr,"function","*");  转化为单值函数(*为数组的第一个值)六、数组的排序
通过元素值对数组排序
sort($arr);  由小到大的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
rsort($arr);  由大到小的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
usort($arr,"function");  使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)忽略键名的数组排序
asort($arr);  由小到大的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
arsort($arr);  由大到小的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
uasort($arr,"function");  使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)保留键名的数组排序通过键名对数组排序
ksort($arr);  按照键名正序排序
krsort($arr);  按照键名逆序排序
uksort($arr,"function");  使用用户自定义的比较函数对数组中的键名进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)自然排序法排序
natsort($arr);  自然排序(忽略键名)
natcasesort($arr);  自然排序(忽略大小写,忽略键名)七、数组的计算
数组元素的求和
array_sum($arr);  对数组内部的所有元素做求和运算数组的合并
array_merge($arr1,$arr2);  合并两个或多个数组(相同的字符串键名,后面的覆盖前面的,相同的数字键名,后面的不会做覆盖操作,而是附加到后面)
“+”$arr1+$arr2;  对于相同的键名只保留后一个
array_merge_recursive($arr1,$arr2);   递归合并操作,如果数组中有相同的字符串键名,这些值将被合并到一个数组中去。如果一个值本身是一个数组,将按照相应的键名把它合并为另一个数组。当数组 具有相同的数组键名时,后一个值将不会覆盖原来的值,而是附加到后面数组的差集
array_diff($arr1,$arr2);  返回差集结果数组
array_diff_assoc($arr1,$arr2,$arr3);  返回差集结果数组,键名也做比较数组的交集
array_intersect($arr1,$arr2);  返回交集结果数组
array_intersect_assoc($arr1,$arr2);  返回交集结果数组,键名也做比较八、其他的数组函数
range(0,12);  创建一个包含指定范围单元的数组
array_unique($arr);  移除数组中重复的值,新的数组中会保留原始的键名
array_reverse($arr,TRUE);  返回一个单元顺序与原数组相反的数组,如果第二个参数为TRUE保留原来的键名
//srand((float)microtime()*10000000);   随机种子触发器
array_rand($arr,2);  从数组中随机取出一个或 多个元素
shuffle($arr);  将数组的顺序打乱

 

转载于:https://www.cnblogs.com/Lance--blog/p/5849634.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打开word2016总是出现很抱歉,此功能看似中断需要修复。。问题解决办法

第一步 打开运行窗口&#xff0c;在电脑桌面左下角有个圆圈点击进去&#xff0c;输入regedit&#xff0c;即可进入。 第二步 打开HKEY_CURRENT_USER中的SOFTWARE 第三步 找到HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Word\Options项如图红色箭头标示。然后点击O…

机器学习——人工神经网络之多层神经网络(多层与三层)

目录 一、多层神经网络 1、多层神经网络数学模型 2、数学模型中的非线性函数fai 1&#xff09;非线性函数fai存在的意义 2&#xff09;非线性函数fai具体是什么&#xff1f; 3、多层神经网络与单层神经网络的区别与改进 1&#xff09;单层神经网络数学模型 2&#xff0…

noip2012-day2-t2

【问题描述】 在大学期间&#xff0c;经常需要租借教室。大到院系举办活动&#xff0c;小到学习小组自习讨论&#xff0c;都需要向学校申请借教室。教室的大小功能不同&#xff0c;借教室人的身份不同&#xff0c;借教室的手续也不一样。 面对海量租借教室的信息&#xff0c;我…

机器学习——人工神经网络之后向传播算法(BP算法)

目录 一、后向传播算法的本质——梯度下降法求局部极值 1、w迭代公式的合理性

获取视图的宽高

1 view.measure(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 2 int width view.getMeasuredWidth(); 3 int height view.getMeasuredHeight(); 转载于:https://www.cnblogs.com/cmgrass/p/4978222.html

排序算法02--冒泡排序

思路&#xff1a;冒泡排序 就是把大的数一个个沉到下面&#xff0c;当然也可以是把小的数一个个浮到上面。 在最外层需要比较n-1次&#xff0c;因为n-1个大的数被沉到了下面&#xff0c;剩下一个自然就是最小的数了。 在这n-1次的里层&#xff0c;还需要亮亮相互比较&#xff0…

机器学习——人工神经网络之参数设置(BP算法)

目录 一、复习(BP算法) 二、训练模型的建议 三、参数设置内容 1、随机梯度下降(SGD)

关于▲的各种交点

对于△ABC证明&#xff1a; ①三角形的三条中线交于一点&#xff1a; 等腰三角形&#xff1a;作中线BD、CE与AC、AB交于D、E&#xff0c;相交于O&#xff0c;连接AO并延长交BC于F&#xff1b; 证△ABD全等于△ACE&#xff0c;再证△EBO全等于△D…

javaScript获取url中的参数

var urlTools {//获取RUL参数值getUrlParam: function(name) { /*?videoIdidentification */var params decodeURI(window.location.search); /* 截取&#xff1f;号后面的部分 index.html?actdoctor,截取后的字符串就是?actdoctor */var reg …

机器学习——支持向量机SVMpython实现

一、SVM理论 可见以下文章&#xff1a; 《机器学习——支持向量机SVM之线性模型》 《机器学习——支持向量机SVM之非线性模型低维到高维映射》 《机器学习——支持向量机SVM之非线性模型原问题与对偶问题》 《机器学习——支持向量机SVM之非线性模型原问题转化为对偶问题》…

琐碎易错点

1.font-size 设置的是字体的高 2.浏览器内核&#xff1a; 主流浏览器   内核 IE       trident Firfox     Gecko Chorme    Webkit&#xff08;原来&#xff09;/blink&#xff08;现在&#xff09; Safari     Webkit&#xff08;苹果公司独立研发的&a…

Python安装Jupyter Notebook配置使用教程

原文见&#xff1a;https://blog.csdn.net/qq_27825451/article/details/84427269 一、什么是jupyter 1、简介&#xff1a; jupyter notebook是一种 Web 应用&#xff0c;能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中。它可以直接在代码旁…

ExtJS4.2学习(10)分组表格控件--GroupingGrid(转)

鸣谢网址&#xff1a;http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-17/179.html --------------------------------------------------------------------------------------------- 分组表格控件在我们的开发中经常被用到&#xff0c;GroupingGrid…

九个Console命令,让js调试更简单

一、显示信息的命令 1: <!DOCTYPE html>2: <html>3: <head>4: <title>常用console命令</title>5: <meta http-equiv"Content-Type" content"text/html; charsetutf-8" />6: </head>7: <body>8: …

numpy——axis

size()和max()中的含义 以前我理解axis0代表行&#xff0c;axis1代表列&#xff1b; 但是这种含义在函数size()和max()中恰恰相反&#xff1b; 其实不是这样的&#xff0c;我们回到单词axis本身&#xff0c;它的意思是“轴”&#xff0c;没错轴就是代表一个方向&#xff0c;像…

Android ListView几个重要属性

1、transciptMode属性&#xff0c;需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息&#xff0c;并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件&#xff08;支持ScrollBar&#xff09;自动滑动到最底部…

Halcon例程(基于GMM模型的分类)详解 —— classify_citrus_fruits.hdev

一、例程简介 该例程比较有代表性&#xff0c;属于Halcon里的分类方法之一&#xff0c;直接调用Halcon封装好的GMM分类器&#xff08;高斯混合模型&#xff09;对橘子和柠檬进行分类。GMM属于概率分类方法&#xff0c;属于P(Y|X)&#xff0c;通过对样本的概率密度分布进行估计…

正则表达式匹配不包含特定字符串解决匹配溢出问题

匹配溢出问题在正则表达式当中算是比较常见的问题&#xff0c;它常常导致我们匹配结果莫名其妙的出错&#xff0c;本文专门为你讲解如何通过匹配不包含特定字符串的方法来解决这类问题。 那么&#xff0c;什么是匹配溢出呢&#xff1f; 下面我们来看个例子&#xff1a; 源文本&…

numpy——mgrid

x1,x2 np.mgrid(x1min:x1max:num1j,x2min:x2max:num2j)x1返回的是x1min到x1max间均匀分成num1个数&#xff0c;进行横向扩展为方阵 x2返回的是x2min到x2max间均匀分成num2个数&#xff0c;进行纵向扩展为方阵 Examples -------- >>> np.mgrid[0:5,0:5] array([[[0,…

Halcon例程(基于3D形状匹配识别方法)详解 —— create_shape_model_3d_lowest_model_level.hdev

一、例程简介 最近在研究3D识别方面的东西&#xff0c;查了不少资料&#xff0c;发现halcon里有不少关于三维物体识别的例程&#xff0c;这里对其中一个做出详解。该例程是基于三维匹配方法的&#xff0c;因为有三维模型SM3&#xff0c;所以不需要自己创建&#xff1b;另因为例…