设为首页 收藏本站
查看: 601|回复: 0

[经验分享] Learning PHP-array

[复制链接]

尚未签到

发表于 2017-3-4 13:46:30 | 显示全部楼层 |阅读模式
引用
存储在数组中的值为数组元素。每个数组元素有一个相关的索引,它可以用来访问元素。
在大多数编程语言中,数组都具有数字索引,而且这些索引通常是从0或1开始的。

PHP允许间隔性地使用数字或者字符串作为数组的索引。可以将数组的索引设置为传统的数字型,也可以将索引设置为任何所希望的索引,这样可以使得索引更有意义和有用。
访问数组的内容,可以直接使用其名称。

$products[0]
使用循环访问数组

foreach($products as $current){
echo $current.' ';
}
<?php
$products = array('a'=>1,'b'=>2,'c'=>3);
foreach ($products as $current){
echo $current.'<br />';
}
?>
<?php
$products = array('a'=>1,'b'=>2,'c'=>3);
foreach ($products as $key=>$value){
echo $key." - ".$value."<br .>";
}
?>
<?php
$products = array('a'=>1,'b'=>2,'c'=>3);
while (list($key,$value) = each($products))
echo "$key - $value<br />";
?>

需要注意的一点是,当使用each()函数时,数组将记录当前元素。如果希望在相同的脚本中两次使用该数组,就必须使用函数reset()将当前元素重新设置到数组开始出。
reset($products);

数组操作符

  • +      联合     $a + $b      $a和$b的联合。数组$b将被附加到$a中,但是任何关键字冲突的元素将不会被添加。
  • ==    等价     $a == $b    如果$a和$b包含相同的元素,返回true
  • ===  恒等     $a === $b  如果$a和$b包含相同顺序和类型的元素,返回true
  • !=     不等价  $a != $b     如果$a和$b不包含相同元素,返回true
  • <>    不等价  $a <> $b    与!=相同
  • !==   不恒等  $a !=== $b 如果$a和$b不包含相同顺序类型的元素,返回true

多维数组

<?php
$products = array(
array(
'Code'=>'TIR',
'Description' => 'Tires',
'Price' => 100
),
array(
'Code'=>'OIL',
'Description' => 'Oil',
'Price' => 10
)
);
for($row = 0; $row < 2; $row++){
echo '|'.$products[$row]['Code'].'|'.$products[$row]['Description'].'|'.$products[$row]['Price'].'|<br />';
}
?>

数组的排序

  • sort()函数
  • sort($products)
  • 函数asort()根据数组的每个元素值进行排序。
  • 函数ksort()按关键字排序而不是按值排序。
  • 实现反向排序的函数为
  • rsort()、arsort()和krsort()。

多维数组的排序
需要自己编写比较函数。

function compare($x,$y){
if($x[1] == $y[1]){
return 0;
}else if($x[1]< $y[1])){
return -1;
}else{
return 1;
}
}
usort($products,'compare');
shuffle()函数
array_reverse()函数,反转数组元素的元素顺序。
<?php
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
?>
<html>
<head>
<title>Bob's Auto Parts - Customer Orders</title>
</head>
<body>
<h1>Bob's Auto Parts</h1>
<h2>Customer Orders</h2>
<?php
$orders = file("$DOCUMENT_ROOT/orders/orders.txt");
$number_of_orders = count($orders);
if($number_of_orders == 0){
echo "<p><strong>No orders pending.Please try again later.</strong></p>";
}
echo "<table border = \"1\"\n>";
echo "<tr><th bgcolor=\"#CCCCFF\">Order Date</th>
<th bgcolor=\"#CCCCFF\">Tires</th>
<th bgcolor=\"#CCCCFF\">Oil</th>
<th bgcolor=\"#CCCCFF\">Spark Plugs</th>
<th bgcolor=\"#CCCCFF\">Total</th>
<th bgcolor=\"#CCCCFF\">Address</th>
</tr>";
for($i=0;$i<$number_of_orders;$i++){
$line = explode("\t", $orders[$i]);
$line[1] = intval($line[1]);
$line[2] = intval($line[2]);
$line[3] = intval($line[3]);
echo "<tr>
<td>".$line[0]."</td>
<td align=\"right\">".$line[1]."</td>
<td align=\"right\">".$line[2]."</td>
<td align=\"right\">".$line[3]."</td>
<td align=\"right\">".$line[4]."</td>
<td>".$line[5]."</td>
</tr>";
}
echo "</table>";
?>
</body>
</html>
explode()函数进行字符串的分割
原型如下:
array explode(string separator, string string [, int limit])
intval()函数可以将一个字符串转换成一个整数。

  • each()函数会在指针前移一个位置之前返回当前元素。
  • next()函数是将指针前移,然后在返回新的当前元素。
  • reset()函数将返回指向数组第一个元素的指针。
  • end()可以将指针移动到数组末尾。
  • 要反向遍历一个数组,可以使用end()和prev()函数。
  • prev()函数和next()函数相反,它是将当前指针往回移一个位置然后再返回新的当前元素。

对数组的每一个元素应用任何函数:array_walk()
bool array_walk(array are, string fund, [mixed userdata])
count()函数统计数组中元素个数
sizeof()函数具有同样的作用,这两个函数都可以返回数组元素的个数。
array_count_values()更加复杂一些。如果调用array_count_values($array)这个函数将会统计每个特定的值在数组$array中出现过的次数。
将数组转换成标量变量:extract()
对于一个非数字索引数组,而该数组又有许多关键字-值对,可以使用函数extract()将它们转换成一系列的标量变量。extract()的函数原型如下所示:
extract(array var_array [, int extract_type] [, string prefix]);
引用
函数extract()的作用是通过一个数组创建一系列的标量变量,这些变量的名称必须是数组中关键字的名称,而变量则是数组中的值。


<?php
$products=array(
'Code'=>'TIR',
'Description' => 'Tires',
'Price' => 100
);
extract($products);
echo $Code;
echo $Description;
echo $Price;
?>
extract_type的可用值

  • EXTR_OVERWRITE         当发生冲突时覆盖已有变量(默认值)
  • EXTR_SKIP              当发生冲突时跳过一个元素
  • EXTR_PREFIX_SAME       当发生冲突的时创建一个名为$prefix_key变量。必须提供prefix参数
  • EXTR_PREFIX_ALL        在所有变量名称之前加上由prefix参数的指定值。必须提供prefix参数
  • EXTR_PREFIX_INVALID    使用指定的prefix在可能无效的变量名称前加上前缀。必须提供prefix参数
  • EXTR_IF_EXISTS         只提取已经存在的变量,这个参数对于数组到变量的转换时非常有用
  • EXTR_PREFIX_IF_EXISIS  只有在不带前缀的变量已经存在的情况下,创建带有前缀的变量。
  • EXTR_REFS              以引用的方式提取变量

Q:
1、对数组元素进行排序(正反,一维数组以及多维数组)
参考资料:
PHP&MySQL.Web

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-350273-1-1.html 上篇帖子: php 添加mongodb扩展 下篇帖子: php连接access
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表