本章将介绍PHP基本类型。
相信我们已经熟悉了C/C++,C#或者Java里的任意一种语言。本章会以C#为比较语言。
OK,如果你想学PHP,你最先考虑的是什么呢?
我相信肯定是下面的几个问题:

  • PHP有哪几种数据类型,它们和其他语言有什么区别呢?
  • 一种语言对于数据类型,有强类型和弱类型之分,PHP属于哪一种呢?
  • PHP有什么独特的地方呢?

基于上面想法,我将会一一阐述。
还是先把上一篇文章所引用的代码拿出来吧。

PHP实例代码
 1 function display_user_urls($url_array)
 2 {
 3   // display the table of URLs
 4 
 5   // set global variable, so we can test later if this is on the page
 6   global $bm_table;
 7   $bm_table = true;
 8 ?>
 9   <br />
10   <form name='bm_table' action='delete_bms.php' method='post'>
11   <table width=300 cellpadding=2 cellspacing=0>
12   <?php
13   $color = "#cccccc";
14   echo "<tr bgcolor='$color'><td><strong>Bookmark</strong></td>";
15   echo "<td><strong>Delete?</strong></td></tr>";
16   if (is_array($url_array) && count($url_array)>0)
17   {
18     foreach ($url_array as $url)
19     {
20       if ($color == "#cccccc")
21         $color = "#ffffff";
22       else
23         $color = "#cccccc";
24       // remember to call htmlspecialchars() when we are displaying user data
25       echo "<tr bgcolor='$color'><td><a href=\"$url\">".htmlspecialchars($url)."</a></td>";
26       echo "<td><input type='checkbox' name=\"del_me[]\"
27              value=\"$url\"></td>";
28       echo "</tr>"; 
29     }
30   }
31   else
32     echo "<tr><td>No bookmarks on record</td></tr>";
33 ?>
34   </table> 
35   </form>
36 <?php
37 }

逐一讨论吧。

  1. PHP有哪几种数据类型,它们和其他语言有什么区别呢?

PHP支持8种原始的数据类型。

其中包括4种标量类型:

  • Integer
  • Float
  • String
  • Boolean

同时包括2种复合类型:

  • Array
  • Object

但是还有2种特殊的类型:

  • NULL
  • Resource

写到此,你可能心里开始犯嘀咕:那么它们是在程序里面怎么表示呢?好的,让我们先看看前面6种数据类型吧。还有2种类型后面解释。

  • Integer:int
  • Float:float
  • String:string
  • Boolean:bool

其实上面的和C# 没有多大区别,这里不多说了。
Array数据类型还是比较特殊的,因为在C#语言里就没有这种数据类型,其他语言,C/C++,Java也是没有的。你可以把他当成C#里的数组看待就可以了。另外,看看PHP官方网站上是怎么说的。
   PHP 中的数组实际上是一个有序图。图是一种把 values 映射到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组来使用,或列表(矢量),散列表(是图的一种实现),字典,集合,栈,队列以及更多可能性。因为可以用另一个 PHP 数组作为值,也可以很容易地模拟树。
看看Array的用法吧。我们可以新建一个Array对象,由于Array是key和value映射的。所以Array支持一定数量以分号分隔的值对。给个例子,代码如下:

<?php
$arr = array("Hello" => "Word", 12 => true);

echo $arr["Hello"]; // bar
echo $arr[12];    // 1
?>

请记住一点key 可以是整型或者字符串。如果键名是一个整型的标准表达方法,取整,如果是float型,转化为整型。与之对比,值则可以为任何值。
如果你想实现多维数组怎么办?在PHP没有提供类系与C#的多维数组的写法,为什么呢?我的观点是这里的数组早已经不是C# 等语言里的单纯的数组了。它已经扩展了数组,可以哈希表,字典等等。所以提供多维数组确实没有必要。虽说如此,但是可以实现类似的功能,如下代码:

<?php
$arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42));

echo $arr["somearray"][6];    // 5
echo $arr["somearray"][13];  // 9
echo $arr["somearray"]["a"];  // 42
?>

既然讨论到这里,你可能想想知道如何新建或删除一个数组对象。什么都不说了,看看下面代码:

 1 ?php
 2 $arr = array(5 => 1, 12 => 2);
 3 $arr[] = 56;    // 相当于 $arr[13] = 56;
 4                 //因为第二个元素的键是12       
 5 $arr["x"] = 42; // 创建一个新元素,且键为字符串
 6                 //"x",值位42.
 7 unset($arr[5]); //删除键位5的元素。
 8 unset($arr);    // 删除整个数组
 9                 //unset()是一函数,从字面的意思上                      
                   //看也知道是撤销设置
10 ?>

怎么样,基本上了解了Array了吧。
至于Object嘛,感觉和C#里的没什么区别。

NULL
对象就有意思了,这个在C# 里是没有的,C#倒是有个null。

特殊的 NULL 值表示一个变量没有值,NULL 类型唯一可能的值就是 NULL注意了 NULL 类型是 PHP 4 引进的。

在下列情况下一个变量被认为是 NULL

  • 被赋值为 NULL

  • 尚未被赋值。

  • 被unset()。

简单吧,原来把C#里的null作为对象了。聪明的家伙们。
既然如此,我们如何判断某个变量为NULL ,相当的简单,调用is_null(),如何将某个变量设为NULL ,一种方法是调用unset().

看看Resource吧,称为资源。它保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。 由于资源类型变量保存为打开文件、数据库连接、图形画布区域等的特殊句柄,因此无法将其它类型的值转换为资源。 由于 PHP4 Zend 引擎引进了资源计数系统,可以自动检测到一个资源不再被引用了(和 Java 一样)。这种情况下此资源使用的所有外部资源都会被垃圾回收系统释放。由于此原因,很少需要用某些 free-result 函数来手工释放内存。垃圾回收?
除了这些还有其他的吗?当然是肯定的。还有一些伪类型:
         mixed

           mixed
说明一个参数可以接受多种不同的(但并不必须是所有的)类型。

例如 gettype可以接受所有的 PHP 类型,str_replace可以接受字符串和数组。

  number
            number 说明一个参数可以是 int或float.

callback
          有些诸如 call_user_function()usort() 的函数接受用户自定义的函数作为一个参数。Callback 函数不仅可以是一个简单的函数,它还可以是一个对象的方法,包括静态类的方法。

2 .一种语言对于数据类型,有强类型和弱类型之分,PHP属于哪一种呢?

PHP是弱类型的。在PHP里,变量的类型是赋给它们的值决定的。如果赋的值是整型,那么变量就是整型,如果是字符串,就是字符串型。看如下代码:

<?php
 $name="your name";//name位string类型。
 $total=12;        //total为整型
?>

那么如何转型呢,我觉得和C# 差不多的。就不赘述了。

PHP 6:PHP 基本数据类型相关推荐

  1. Postman使用Date数据类型,Postman发送Date类型数据,Postman模拟前端调用

    Postman使用Date数据类型: 在form-data数据类型下,使用 2021/7/7 11:11:00 (yyyy/MM/dd HH:mm:ss) 的数据格式即可 如下: 在json数据格式中 ...

  2. 大数据中用到的新的数据类型bigint、decimal、smallint、tinyint

    在对比oracle数据库和大数据库的时候,发现了几个用以存放数字的新的类型bigint.decimal.smallint.tinyint,为了对比之间的不同,我进行了统计 bigint 可以精确的表示 ...

  3. NumPy — 创建全零、全1、空、arange 数组,array 对象类型,astype 转换数据类型,数组和标量以及数组之间的运算,NumPy 数组共享内存

    NumPy 简介 一个用 python 实现的科学计算包.包括: 1.一个强大的 N 维数组对象 Array : 2.比较成熟的(广播)函数库: 3.用于整合 C/C++ 和 Fortran 代码的工 ...

  4. 【JavaScript总结】JavaScript语法基础:数据类型

    ------>数据类型有哪些? ->基本类型:数字类型,布尔类型,字符串类型 ->引用类型:对象类型,函数类型 ->空类型:null 和 undefined ->运算符: ...

  5. 数据类型对应的字节数

    20210622 https://www.icode9.com/content-4-421680.html 32位和64位常用数据结构所占字节数 20210126 1 2 4 8 1248 刚好都是2 ...

  6. tensorflow2.0 基础一 常用数据类型及转换

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_43619065/arti ...

  7. 深入浅出Redis五种基本数据类型

    文章目录 1.String SDS(Simple Dynamic String) 2.RedisDB设计 3.List 4.Hash 5.Set intset 6.ZSet skiplist 1.St ...

  8. TVM自定义数据类型

    TVM自定义数据类型 本文将介绍"自定义数据类型"框架,该框架可在TVM中使用自定义数据类型. 介绍 在设计加速器时,关键是如何近似地表示硬件中的实数.这个问题具有长期的行业标准解 ...

  9. 自主数据类型:在TVM中启用自定义数据类型探索

    自主数据类型:在TVM中启用自定义数据类型探索 介绍 在设计加速器时,一个重要的决定是如何在硬件中近似地表示实数.这个问题有一个长期的行业标准解决方案:IEEE 754浮点标准.1.然而,当试图通过构 ...

  10. 基本数据类型转换规则

    基本数据类型转换规则 前言 一. byte.short.char运算的规则 二. 多种数据类型混合运算规则 三.总结 前言 在这篇文章中,我对Java的基本类型数据类型的混合运算做了一些总结,希望可以 ...

最新文章

  1. 几种Normalization算法.md
  2. 初识软件体系结构(1-4课时)
  3. 植物数据库-小RNA注释数据库 sRNAanno(2021)
  4. Spark技术内幕:Shuffle Read的整体流程
  5. P5904-[POI2014]HOT-Hotels加强版【长链剖分,dp】
  6. wpsppt流程图联系效果_| JEAM | 文章精选:大城市收取交通拥堵费的影响与效果
  7. Spring4-自动装配Beans-按属性的数据类型自动装配Bean
  8. EF4的系列文章,mark一下
  9. 粒子群优化算法matlab实现,粒子群优化算法的MATLAB程序实现+源程序
  10. 大学计算机课程日记,大学计算机实习日记
  11. 数据库安全性控制及控制流程和常用方法
  12. 人工智能基础-数学方法-形式逻辑
  13. 信度效度难度区分度是什么意思_信度、效度、难度、区分度
  14. 数据库的学习笔记(一)
  15. linux(centos7)内核升级
  16. 【面经】微软SWE暑期实习
  17. Linux学习(一)-- df/du命令
  18. 【操作系统】——PV操作
  19. SpringBoot使用SSE推送消息
  20. 0102数据结构和图处理算法-无向图-数据结构和算法(Java)

热门文章

  1. NET Core的代码安全分析工具 - Security Code Scan
  2. 【数据结构】绪论部分
  3. poj 2201 构造
  4. 【Sqoop学习之一】Sqoop简介
  5. SQL Server分页查询方法整理
  6. js中null和undefined的区别
  7. MongoDB基础--数据库和集合基本操作
  8. visual studio 2010 开发net 2.0 3.5项目
  9. tomcat压力测试、优化
  10. 关于“VCL已死、RAD已死”答读者问