`

Learning PHP-array

    博客分类:
  • php
php 
阅读更多
引用
存储在数组中的值为数组元素。每个数组元素有一个相关的索引,它可以用来访问元素。
在大多数编程语言中,数组都具有数字索引,而且这些索引通常是从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
分享到:
评论

相关推荐

    learning php-3.rar_Learning Php_php

    这部分会介绍如何操作和处理这些数据结构,包括字符串函数(如strlen、substr、str_replace)和数组函数(如array_push、array_pop、array_search)。 3. **文件操作**:PHP提供了强大的文件系统函数,用于读写文件...

    learning php-1.rar_Learning Php_php

    本资料集是“Learning PHP”的第一部分,主要针对初学者,旨在帮助读者快速掌握PHP的基本概念和技能,为Web开发打下坚实的基础。 在学习PHP的过程中,了解其基本语法是至关重要的。PHP脚本以尖括号(&lt;?php ... ?&gt;)...

    learning-PHP.zip_Learning Php

    本文将根据"learning-PHP.zip_Learning Php"的资源,深入讲解PHP的基础知识。 1. **安装与环境配置** 在开始学习PHP之前,你需要在本地安装一个支持PHP的Web服务器环境,如XAMPP或WAMP。这些集成环境包含了Apache...

    10day learning PHP 10日PHP学习手册

    根据提供的信息,我们可以总结出以下关于“10day learning PHP 10日PHP学习手册”的详细知识点: ### 1. PHP的学习目标与手册特点 - **手册格式**:该手册以PDF格式呈现,旨在帮助读者在10天内从零基础达到能够...

    php learning

    《PHP学习》 PHP,全称“Hypertext Preprocessor”(超文本预处理器),是一...O'Reilly Learning PHP 5这本书将是你学习过程中的一份宝贵的参考资料,它将深入浅出地介绍PHP 5的相关知识,帮助你巩固基础,提升技能。

    PHP_Learning:PHP_Learning

    - **字符串和数组操作**:PHP提供了强大的字符串处理和数组操作函数,如strpos()、explode()、implode()和array_push()等。 - **文件和目录操作**:学习如何读写文件、创建删除目录等,例如fopen()、fwrite()、...

    Beginning PHP 5.3

    These key knowledge points provide a comprehensive overview of the topics covered in "Beginning PHP 5.3" and serve as a solid foundation for learning and mastering PHP programming.

    Learning

    例如,字符串处理函数(如strlen、str_replace)、数组操作函数(如array_push、array_pop)、日期和时间函数(如date、strtotime)等。此外,PHP还集成了MySQL数据库连接,提供了PDO(PHP Data Objects)和mysqli...

    PHP 会话控制 cookie 基础教程

    setcookie("array[C]", "I am learning PHP."); ``` 通过这种方式,可以更方便地管理一系列相关的 Cookie 数据。在实际应用中,这有助于更好地组织数据,提高应用程序的灵活性和可扩展性。 #### 总结 通过以上...

    著名十八哥PHP

    5. **数组操作**:PHP支持索引数组和关联数组,提供了丰富的数组函数,如array_push、array_pop、count、foreach遍历等。 6. **字符串处理**:str_replace、strpos、substr、trim等函数用于处理和操作字符串。 7. **...

    PHP v5 学习(CHM).rar

    以上只是PHP 5学习中的一部分关键知识点,实际的【Learning PHP 5】教程可能还包含更多高级主题,如设计模式、性能优化、安全性实践等。通过深入学习并掌握这些内容,开发者可以有效地构建稳定、高效且安全的PHP 5...

    learning_php

    在本项目"learning_php"中,我们聚焦于学习和掌握PHP这一编程语言,特别是为了应对HCODE课程的需求。PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,主要应用于Web开发,可嵌入HTML中,用于创建动态...

    Learning:我所学语言的所有参考

    7. **数组操作**:PHP支持索引数组和关联数组,可以使用`array_push`、`count`、`foreach`等函数进行操作。 8. **文件操作**:通过`fopen`、`fwrite`、`fclose`等函数可以读写文件,`file_get_contents`用于获取...

    PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)

    $info .= "-- For testing and learning purposes only, not suitable for large datasets\r\n"; $info .= "-- ----------------------------\r\n\r\n"; file_put_contents($to_file_name, $info, FILE_APPEND); //...

    PHP 正则表达式常用函数_.docx

    ", we are learning PHP together."; if (preg_match("/\d{4}-\d{2}-\d{2} \d{2}:\d{2} [ap]m/", $content, $matches)) { echo "匹配的时间是:" . $matches[0] . "\n"; } if (preg_match("/([\d-]{10})([\d:]{5} ...

    PHP随机数生成代码与使用实例分析

    echo 'I am learning ' . $my_array[rand(0, 6)] . ' on 51CTO.com'; } ``` 这样的代码会根据`$repetition`的值随机输出0到7次不同的编程语言。 随机数在许多实际场景中都有应用,例如验证码的生成,防止机器人...

    markov:马尔可夫链算法在PHP中的实现

    马尔可夫链马尔可夫链算法在 PHP 中的实现。入门 use Fieg \ Markov \ MarkovChain ;$ sentences = [ 'my blue car' , 'red and blue flowers' , 'his blue... 这将导致: array(2) { 'car' =&gt; double(0.66666666666667

    mahara教师评价系统

    Moodle 这个词是 Modular Object-Oriented Dynamic Learning Environment , 即模块化面向对象的动态学习环境 的缩写。是一个用来建设基于 Internet 的课程和网站的软件包。 Moodle 平台依据社会建 构主义的教学...

Global site tag (gtag.js) - Google Analytics