对比JAVA学习PHP系列:数据结构

    xiaoxiao2025-01-18  11

    总结: php是一种弱类型检查的语言 php中的字符串和数组非常重要。 主题PHPJAVA 1.  定义变量与常量,系统的内置的常量 最基本的数据存储单元 变量: 变量是临时存值的容器。在任何编程语言中都居于核心位置。 php是一种弱类型检查的语言(和java区别非常大),它的数据类型是由程序的上下文决定。 php的特性之一就是它不要求在使用变量之前声明变量。当第一次给一个变量赋值时,你才创建了这个变量。一旦设置了这个变量,我们就可以在脚本中重复的使用它。 在PHP中的声明变量必须是使用一个美元“$”符号后面跟变量名来表示,使用=给一个变量赋值。 php的变量有一定的使用范围(作用区域):大多数的PHP变量如果不是在函数里面声明,只能在声明处到文件结束的一个单独的范围使用。这个单独的范围跨度不仅仅是在<?php标记开始处到?>标记结束处使用,可以在一个页面的所有开启的PHP模式下使用,也包含了include和require引入的文件。如果使用了cookie和session,还可以在多个页面中应用。 位于一对花括号之间的所有语句称为一个代码块。 任何在代码块内部的开始位置声明的变量都具有代码块作用域,表示它们可以被这个代码块中的所有语句访问。 当代码块处于嵌套状态时,里面一层的代码块中的变量在该代码块尾部便终止。但是,如果内层代码块有一个变量名与外层代码块的变量名相同,则内层代码块的变量名会隐藏外层的变量名。 在变量的使用范围周期内,可以通过unset()\isset()\empty()来判断变量的状态 变量名命名:建议驼峰 可变变量:java中没有 <?php $hi  'hello'; $$hi  'world'; echo  $hello; ?> 输出world。 即$$hi == ${$hi} 变量的引用赋值:java中没有 常量: 常量一般用于一些数据计算中固定的数值。例如数学的PI=3.1415. 常量的作用于是全局的,可以在脚本的任何地方声明和访问到常量。 常量的类型只能是标量数据:boolean\integer\float\string。 在php中,常量非常常见,不仅可以自定义常量使用,更主要的是几乎在每个php扩展中都默认提供了大量可供使用的常量,而且php也提供了一些比较实用的魔术常量。 常量的定义和使用: 声明常量和声明变量的方式不同,在php中是通过使用define()函数来定义常量的,不能通过赋值运算符定义。 常量名称总是大写,不过不要在前面加上$符号。 例如: define( "PI"3.1415926); 系统中的预定义常量: PHP中的魔术常量: 用时查api文档即可。 强类型语言。 变量: 分为成员变量和局部变量。与PHP的变量还是有非常大的区别的。 常量: java使用static定义。 这一块两者之间还是有很多差别的。 2.数据类型 变量有很多类型,php中除了支持以下8种原始类型,为了确保代码的易读性,还有伪类型。 8中基本类型: 四种标量类型 boolean 布尔型、integer整型、float浮点型、string字符串 两种复合类型: array数组、object对象 两种特殊类型: resource、NULL 数据类型之间的相互转化:不细讲,和java差别不大 每种数据类型占的字节数,语言和语言是不同的,不过初学,没必要深究,也没必必要看那些比较偏的东西,学会运用2/8法则 后面会深入讲解字符串类型和数组类型,这是PHP的核心内容,非常重要,平时工作中遇到的99%都是这两种类型 这里没什么可比的,数据类型大致一样,但是语言与语言之间有很多细微的差别 思想都是一致的,具体表现可能会有区别 伪类型 伪类型并不是php语言的基本数据类型。只是因为php是弱类型语言,所以在一些函数中,一个参数可以接受多种类型的数据,还可以接受别的函数作为回调函数使用。这里介绍几种伪类型。 mixed:说明一个参数可以接受多种不同的(但并不必须是所有的)类型。 number:说明一个参数可以是integer或者float。 callback:有些诸如call_user_function或usort()的函数接受用户自定义的函数作为一个参数。callback函数不仅可以是一个简单的函数,还可以是一个对象的方法,包括静态类的方法。 java中没有这个概念 3.字符串类型的使用(语言间差异较大) 字符串在PHP中相当重要 php没有给字符串的大小强加实现范围,所以完全没有理由担心字符串长度。字符串可以使用单引号、双引号、定界符三种字面上的方法定义。虽然这三种方法都可以定义相同的字符串,但它们在功能上是有明显区别的。所以我们可以根据它们之间的区别选择不同的字符串定义方式。 1.单引号 在单引号引起来的字符串中不能在包含单引号,试图包含会有错误发生。如果有必要在单引号中表示一个单引号的话,需要用”\“表示,这个和很多语言一样。 注意,如果试图转义任何其他字符,反斜线本身也会被显示出来。所以在单引号中可以使用转义字符(\),但只能转义在单引号中引起来的单引号和转义转义字符本身。 此外,在单引号字符串中出现的变量不会被变量的值替代。即php不会解析单引号中的变量,而是将变量名原样输出。 总结:在定义单引号字符串时,使用单引号效率会更高,因为php解析时不会花费一些处理字符转义和解析变量上的开销。因此,如果没有特别需求,应使用单引号定义字符串。 2.双引号 如果用双引号括起字符串,php懂得更多特殊字符特殊字符的转义序列。 另外,双引号字符串最重要的一点是其中的变量会被变量值替代。 3.定界符 另外一种给字符串定界的方法是使用定界符语法(”<<<“)。使用如下:     $test  <<<EOT 黄河之水天上来, \\\\ \$ 奔流到海不复回,三千越甲可吞吴 EOT; 定界符不能初始化类成员,其他地方使用与双引号类似。不过因为没有双引号,意味着定界符文本中不需要转义引号。通常用于从文件或者数据库中大段的输出文档。 感觉以后写sql语句就不需要转义字符了。 字符串处理函数、正则表达式等就不展开说明了,用时根据需求查api文档。初学侧重语法学习。不深究。 java字符串必须是双引号,单引号是字符char 此外java字符串也没有定界符这种情况。区别还是蛮大的 4.数组 数组在PHP中相当重要 数组是PHP中重要的的复合数据类型。它和java的数组差别非常非常的大。 php不像java一样提供了很多的容器类,php只有数组一种类型。但是php的数组功能非常强大。php中的数组变量可以存储任意多个、任意类型的数据。并且可以实现其他强数据类型中的堆、栈、队列等数据结构的功能。 数组的分类: php中数组中的每一个元素都有键(或叫索引值)值组成。 数组分为索引数组和关联数组 索引数组:索引是整数 关联数组:索引是字符串 数组的定义: php不需要在创建数组时指定数组的大小 不需要在使用数组前先行声明 可以在同一数组中存储任何类型的数据 支持一维多维数组 数组的定义有两种方法: 1.直接为数组元素赋值,可以赋值为索引数组或关联数组 例如: 2.使用array()函数声明数组,可以赋值为索引数组或关联数组 例如: $arr  = array( "foo" =>  "bar"12 =>  true); 多维数组 $contact  = array(     array( 1"高某""A公司""4353535""rerer@qq.com"),     array( 1"高某""A公司""4353535""rerer@qq.com"),     array( 1"高某""A公司""4353535""rerer@qq.com"),     array( 1"高某""A公司""4353535""rerer@qq.com") ); // 输出二位数组中的每个元素 for ( $raw  0$raw  count( $contact);  $raw ++) {     for ( $col  0$col  count( $contact[ $raw]);  $col ++) {         echo  " "  $contact[ $raw][ $col " ";     }     echo  "<br>"; } 数组的遍历:for、foreach、使用list\each\while、使用数组的内部指针 预定义数组 PHP预定义变量数组1、$_SERVER $_SERVER超级全局变量包含由web服务器创建的信息,它提供了服务器和客户配置及当前请求环境的有关信息。根据服务器不同,$_SERVER中的变量值和变量个数会有差别 PHP预定义变量数组2、$_GET $_GET超级全局变量包含使用GET方法传递的参数的有关信息。 PHP预定义变量数组3、$_POST $_POST超级全局变量包含用POST方法传递的参数的有关信息。 PHP预定义变量数组4、$_COOKIE $_COOKIE超级全局变量存储了通过HTTP cookie传递到脚本的信息。这些cookie一般是由以前执行的PHP脚本通过PHP函数setcookie ( ) 设置的。例如,假设使用 setcookie ( )存储了一个名为 example.com、值为ab2213的cookie。以后就可以通过调用$_COOKIE[ ' example.com' ]来获得这个值。 PHP预定义变量数组5、$_FILES $_FILES超级全局变量包含通过POST方法向服务器上传的数据的有关信息。这个超级全局变量与其他的变量有所不同,它是一个二维数组,包含5个元素。第一个下标标示表单的文件上传元素名;第二个下标是五个预定义下标之一。 PHP预定义变量数组6、$_ENV $_ENV超级全局变量提供PHP解析所在服务器环境的有关信息。 PHP预定义变量数组7、$_REQUEST $_REQUEST超级全局变量是一个全能选手,它记录了通过各种方法传递给脚本的变量,特别是GET ,POST 和 COOKIE 。 这些变量的顺序不依赖于它们在发送脚本中出现的顺序,而是依赖于 variables_order 配置指令所指定的顺序。建议少用这个超级变量,因为它不够安全。 PHP预定义变量数组8、$_SESSION $_SESSION 超级全局变量包含与所有会话有关的信息。注册会话信息能为你提供便利,这样就能在整个网站中引用这些会话信息,而无需通过GET或POST显示的传递数据。 PHP预定义变量数组9、$GLOBALS $GLOBALS 超级全局变量数组可以认为是超级全局变量的超集,包含全局作用域内的所有变量。执行下面的代码可以查看$GLOBALS 中所有的变量。 数组相关的处理函数:这里不再细讲,请查阅文档。 差别非常大。5.运算符 算数运算符 字符串运算符:. 赋值运算符 比较运算符 逻辑运算符 位运算符 其他运算符 ?:三元运算符,与java一致 =>数组下标指定符号,java没有,java的数组没有php功能强大,只提供了[ ]。 ->对象成员访问符号,访问对象的成员变量和成员方法,java中用的是.。 区别集中在字符串运算符和其他运算符 java中的字符串运算符是“+” 6.表达式 表达式是任何编程语言的基石。通常是变量、常量和运算符号的组合。 思想与java一模一样,可能表现形式上略有不同 无区别
    转载请注明原文地址: https://ju.6miu.com/read-1295587.html
    最新回复(0)