1. 程式人生 > >php 型別介紹(四中標量型別+陣列)

php 型別介紹(四中標量型別+陣列)

php支援八種原始型別:

四種標量型別:

1、 boolean 布林型

2、 integer 整型

3、 float 浮點型(也做double)

4、string (字串)

兩種符合型別:

 array 陣列

object 物件

最後是兩種特殊型別:

resource 資源

null 

為了確保程式碼的易讀性,本手冊還介紹了一些偽型別

mixed

注: 如果想檢視某個表示式的值和型別,用 var_dump()

注: 如果只是想得到一個易讀懂的型別的表達方式用於除錯,用 gettype()。要檢視某個型別,不要gettype(),而用 is_type 函式。以下是一些範例:

// If this is an integer, increment it by four
if (is_int($int)) {
    
$int += 4;
}

// If $bool is a string, print it out
// (does not print out anything)
if (is_string($bool)) {
    echo
"String: $bool";
}
 

一、布林型別

當轉換為 boolean 時,以下值被認為是 FALSE

<?php

var_dump((bool) "");        // bool(false)


var_dump((bool) 1);         // bool(true)
var_dump((bool) -2);        // bool(true)
var_dump((bool) "foo");     // bool(true)
var_dump((bool) 2.3e5);     // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array());   

// bool(false)


var_dump((bool) "false");   // bool(true)


?>

二、整型

一個 integer 是集合 Z = {..., -2, -1, 0, 1, 2, ...} 中的一個數。

整型值可以用十進位制,十六進位制或八進位制符號指定,前面可以加上可選的符號(- 或者 +)。

如果用八進位制符號,數字前必須加上 0(零),用十六進位制符號數字前必須加上 0x

例子:

<?php

$a = 1234; // 十進位制數
$a = -123; // 一個負數
$a = 0123; // 八進位制數(等於十進位制的 83)
$a = 0x1A; // 十六進位制數(等於十進位制的 26)

?>

如果向八進位制數傳遞了一個非法數字(即 8 或 9),則後面其餘數字會被忽略。

例子 11-2. 八進位制數的怪事

<?php
var_dump
(01090); // 010 octal = 8 decimal
?>

PHP 中沒有整除的運算子。1/2 產生出 float 0.5。可以總是捨棄小數部分,或者使用 round() 函式。 --(四捨五入)

<?php
var_dump
(25/7);         // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7));  // float(4)
?>

強制轉換為整形:

轉換為整形:

int or interger() 強制轉換   或者  呼叫函式intval("37899") 轉換

從布林值轉換到整形

FALSE  將生出 0(零) 

True 將產生出1 (壹)

example:

 var_dump((int)(1>9)); //int 0
 var_dump((int) (4>2));//int 1

從浮點數轉換為整形時,數字將被取整(丟棄小數位)

var_dump((int)9.38475856); //int 9

三、字串型

單引號

雙引號

定界符

1、單引號  

要表示一個單引號,需要用反斜線(\)轉義,和很多其它語言一樣。如果在單引號之前或字串結尾需要出現一個反斜線,需要用兩個反斜線表示。注意如果試圖轉義任何其它字元,反斜線本身也會被顯示出來!所以通常不需要轉義反斜線本身。

ex:

// Outputs: Arnold once said: "I'll be back"
echo 'Arnold once said: "I\'ll be back"'
;

// Outputs: You deleted C:\*.*?
echo 'You deleted C:\\*.*?'
;

// Outputs: You deleted C:\*.*?
echo 'You deleted C:\*.*?'
;

// Outputs: This will not expand: \n a newline
echo 'This will not expand: \n a newline'
;

// Outputs: Variables do not $expand $either
echo 'Variables do not $expand $either'
;

關於字串的例子:

擷取字串:

<?php
// Get the first character of a string  ---- 得到字串的第一個字元
$str = 'This is a test.';
$first = $str{0};
// Get the third character of a string  ----  得到字串的第三個字元
$third = $str{2};

// Get the last character of a string.  ------------ 得到字串的最後一個字元
$str = 'This is still a test.';
$last = $str{strlen($str)-1};

// Modify the last character of a string
$str = 'Look at the sea';
$str{strlen($str)-1} = 'e';
//輸出結果:

Look at the see

?>

五、陣列:

可以用 array() 語言結構來新建一個 array。它接受一定數量用逗號分隔的 key => value 引數對。

array( [key =>]
value
     , ...
     )
// key 可以是 integer 或者 string
// value 可以是任何值

<?php
$arr
= array("foo" => "bar", 12 => true);

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

foo , 12 是key值

bar ,true  是value值

巢狀陣列形式:

<?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
?>

========================

陣列的新增和刪除元素

========================

<?php
$arr
= array(5 => 1, 12 => 2);
$arr[] = 56;    // This is the same as $arr[13] = 56;  
                // at this point of the script

supplements:

$arr =  array(6=>5, 20=>9,"a"=>42);
  $arr[]=45;
  print_r($arr);//Array ( [6] => 5 [20] => 9 [a] => 42 [21] => 45 ) 
在最後一個是integer的key值加1


$arr["x"] = 42; // This adds a new element to                              為陣列新增一個key=“x”的新元素
                // the array with key "x"

===========results:===================

Array ( [6] => 5 [20] => 9 [a] => 42 [21] => 45 [x] => 42 )

====================================


unset($arr[5]); // This removes the element from the array   刪除key=5的指定元素
unset($arr);    // This deletes the whole array

?>

////////////////////////////////////////////////陣列的簡單操作////////////////////////////////////////////////////

--遍歷陣列1:  for-each:

<?php
// 建立一個簡單的陣列
$array = array(1, 2, 3, 4, 5);
print_r($array);

// 現在刪除其中的所有單元,但保持陣列本身的結構
foreach ($array as $i => $value) {
    unset(
$array[$i]);
}
print_r($array);

// 新增一個單元(注意新的鍵名是 5,而不是你可能以為的 0)
$array[] = 6;
print_r($array);

// 重新索引:
$array = array_values($array);
$array[] = 7;
print_r($array);
?>
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)
Array
(
)
Array
(
    [5] => 6
)
Array
(
    [0] => 6
    [1] => 7
)

2、遍歷陣列2:  for

下標自增長0---

$array = array(1, 2);
$count = count($array);
for (
$i = 0; $i < $count; $i++) {
   
    echo $array[$i] . "\n";
}

key值為下標自增長的簡單陣列:

<?php
$colors
= array('red', 'blue', 'green', 'yellow');

foreach (
$colors as $color) {
    echo
"Do you like $color?\n";
}

?>

上例將輸出:

Do you like red?
Do you like blue?
Do you like green?
Do you like yellow?

for-each:

$colors = array('red', 'blue', 'green', 'yellow');

foreach ($colors as $key => $color) {
    echo $colors[$key];
}

//複製陣列

*******

和java以往不同,php的陣列的複製時聯動的,複製的原始陣列會隨著被複制的新陣列的新增或是刪除元素也相應的做出改變

*******

<?php
$arr1
= array(2, 3);
$arr2 = $arr1;
$arr2[] = 4; // $arr2 is changed,
             // $arr1 is still array(2,3)

$arr3 = &$arr1;
$arr3[] = 4; // now $arr1 and $arr3 are the same
?>

///////////////////////////////////////////////陣列的簡單操作  end//////////////////////////////////////////////////////

相關推薦

php 型別介紹四中標量型別+陣列

php支援八種原始型別: 四種標量型別: 1、 boolean 布林型 2、 integer 整型 3、 float 浮點型(也做double) 4、string (字串) 兩種符合型別:  array 陣列 object 物件 最後是兩種特殊型別: resourc

PostgreSQL 資料型別介紹

uuid型別 UUIDs could be generated by client applications or other libraries invoked through a server-side function. specifi

PostgreSQL 資料型別介紹OID的理解

系統表, 系統表之間基本上都是以oid關聯. 例如pg_attrdef.adrelid 關聯 pg_class.oid 先介紹下oid的使用: 以系統表 pg_class為例,檢視下postgres裡各個物件(表、序列、索引 等)的oid

python基礎—基本資料型別set 集合,深淺拷貝

1、基礎資料型別彙總補充 str int list bool dict tuple 2、集合 set {} 可變的資料型別,(不可雜湊)裡面的元素必須是不可變的資料型別,無序,不重複 以下是集合最重要的兩點:   去重,把一個列表變成集合,就自動去重了。   關係測試,測試兩組資料之前的

PHP規範PSR11依賴注入容器介面介紹

本文件描述了依賴注入容器的通用介面。 ContainerInterface設定的目標是標準化框架和庫如何使用容器來獲取物件和引數(在本文件的其餘部分中稱為條目)。 本文件中的關鍵詞“必須”,“必須”,“必需”,“應該”,“不應該”,“應該”,“不應該”,“推薦”,“可以”和“可選”按照RFC

強制型別轉換C++學習筆記 13

無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變數的資料長度進行臨時性轉換,這並不改變該變數的型別。 一、 C語言中強制型別轉換的一般形式為: (資料型別)表示式 例1: 求x與2進行取餘運算。 (int) x % 2 因為取餘運算的運算元必須是整數,如果x是實數

PHP加密介紹

MD5加密: string md5 ( string $str [, bool $raw_output = false ] ) 1.md5()預設情況下以 32 字元十六進位制數字形式返回雜湊值,它接受兩個引數,第一個為要加密的字串,第二個為raw_output的布林值,預設為false

python 學習彙總47:class類型別判斷基礎學習- 推薦 tcy

類判斷 2018/11/17  1.定義類: __metaclass__ = type # 確定使新式類 class father(): def __init__(self,x0=None,x=None,y=None): self.x0 = x0 self.x=x se

SAPUI5教程——SAP Fiori應用型別分析Transactional, Fact Sheets, Analytical

前言 SAP Fiori整體應用型別分為三種,即為Transactional, Fact Sheets, Analytical, 那麼這三種類型有什麼區別呢? 我們先看一張圖: 為了方便理解我們簡單舉個例子: Transactional App 可以

【MFC】指紋型別識別OpenCV + MATLAB混合程式設計

忙了大半個學期的指紋、掌紋處理,這裡稍微整理出部分 目標 找出指紋影象的中心點與三角點,統計間隔脊線數量,完成指紋的歸類。 功能 需要完成的處理包括: 分割前景與背景(利用梯度圖、方向場實現);增強指紋影象(通過均衡化、邊緣收斂、平滑、增強、二指化);細化(提取單畫素的脊線)標記特徵點(切縫法求方向

C# 中的列舉型別 enum 屬於值型別

        C# 支援兩種特殊的值型別:列舉和結構。宣告列舉:宣告時要宣告所有可能的值。 using System; using System.Collections.Generic; using System.Linq; using System.Text; na

警惕邏輯表示式中的無符號型別運算C語言型別轉換

今天在處理邏輯表示式時遇到了類似以下程式的問題。if( strlen(tmp)-10 <0)這個條件怎麼都進不去。經過VS除錯可發現printf("%d",b-10<0);列印的結果為0。 #include<stdio.h> #include<

JAVA_資料型別介紹與基本資料型別之間的運算規則

## 基本資料型別 * 整型: `byte、short、int、long` `java` 的整型常量預設為`int`型,在`java`程式中變數通常宣告為`int`型,除非不足以表示較大的數才用`long`,而在宣告`long`型常量必須在後面加上`l`或`L`。 | 型別 | 佔用儲存空

KafKa介紹分布式架構

方式 讀取 功能 lan 應用 單獨 參考 兩個 失去 介紹 Kafka是一個分布式的、可分區的、可復制的消息系統。它提供了普通消息系統的功能,但具有自己獨特的設計。這個獨特的設計是什麽樣的呢? 首先讓我們看幾個基本的消息系統術語: Kafka將消息以topic為單位進

framework裏的xxxManagerProxy,xxxManager與xxxManagerService概念介紹AIDL通信模型

logs 獲取 封裝 strong system ron bin andro 做的 用於AIDL的模型基本如下 這裏BackupManager的一個例子可以看到下面的關系 1 opt/net/wifi/service/java/com/android/server/wi

Jupyter-NoteBook工具介紹網頁版編輯器

命名 編輯 notebook 分享 安裝完成 cond height 編輯器 con 1.Jupyter-NoteBook位置   在安裝完anaconda後,這個工具已經被安裝完成。    2.打開       3.功能講解    4.其余的功能   可以對文

springmvc系列一 之配置介紹包含官網doc

不同 oca handle bsp cut targe sevlet 繼承 流程 1.springmvc 官網參考地址:   https://docs.spring.io/spring/docs/current/spring-framework-reference/web.

簡明條件隨機場CRF介紹附帶純Keras實現

筆者去年曾寫過博文《果殼中的條件隨機場(CRF In A Nutshell)》,以一種比較粗糙的方式介紹了一下條件隨機場(CRF)模型。然而那篇文章顯然有很多不足的地方,比如介紹不夠清晰,也不夠完整,還沒有實現,在這裡我們重提這個模型,將相關內容補充完成。 本文是對CRF基本原理的一個簡明的介紹

CAN匯流排基礎——CAN匯流排物理層介紹匯流排電壓詳解

CAN匯流排的物理層定義了連線車內各控制器的相關介質以及介面。由於CAN匯流排的資料傳輸實質是通過總線上的電壓變化傳輸的,所以CAN的匯流排電壓是CAN匯流排技術的核心所在,匯流排電壓在物理層中定義。為了深刻理解CAN匯流排,下面我們詳細介紹匯流排電壓:     

微信小程式-微信支付詳細介紹Thinkphp後端程式碼

流程 如微信支付的文件,不再多說 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=3 一一分析一下每一步我們具體要做什麼: 1、小程式內呼叫登入介面,獲取到使用者的o