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

PHP 专栏收录该内容
16 篇文章 0 订阅
总结:
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一模一样,可能表现形式上略有不同
无区别
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值