PHP語法基礎篇(三):類型轉換與常量

"在完成PHP輸出函數和字符串操作的學習后,本篇筆記將記錄 類型轉換常量應用的學習過程。作為語法基礎篇的第三部分,將重點關注:
  1. 類型轉換
  2. 數學函數
  3. 常量定義:define()const 的使用差異
  4. 魔術常量應用:__LINE__ 等特殊常量
所有結論均基于當前測試代碼總結,歡迎指正補充。"

目錄

一、類型轉換

二、數學函數

1、pi() 函數

2、min() 和 max() 函數

3、abs() 函數

4、sqrt() 函數

5、round() 函數

6、隨機數

三、常量

1、創建 PHP 常量

2、const 關鍵字

3、const 與 define() 函數的區別

4、常量與變量的區別

四、魔術常量


一、類型轉換

PHP 在變量聲明時不需要定義類型。在這種情況下,變量的類型由存儲的值決定。也就是說,如果 string 賦值給 $var,然后 $var 的類型就是 string。之后將 int 值賦值給 $var,它將是 int 類型。有時可能希望變量具有特定的數據類型, 這就需要通過類型轉換來完成。

類型轉換通過在值前面的括號中寫入類型來將值轉換指定的類型。

  • (string)?- 轉換為字符串類型。
  • (int)?- 轉換為整數類型。
  • (float)?- 轉換為浮點類型。
  • (bool)?- 轉換為布爾類型。如果值為 0、NULL、false 或為空,則 (bool) 會將其轉換為 false,否則為 true。
  • (array)?- 轉換為數組類型。轉換為數組時,大多數數據類型都會轉換為一個僅包含一個元素的索引數組。NULL 值會轉換為一個空的數組對象。對象會轉換為關聯數組,其中屬性名稱成為鍵,屬性值成為值。
  • (object)?- 轉換為對象類型。轉換為對象時,大多數數據類型都會轉換為一個僅包含一個名為 "scalar" 的屬性和相應值的對象。NULL 值會轉換為一個空對象。索引數組會轉換為對象,其中索引號作為屬性名稱,值作為屬性值。關聯數組會轉換為對象,其中鍵作為屬性名稱,值作為屬性值。
  • (unset)?- 轉換為 NULL 類型。

二、數學函數

PHP 有一套數學函數,可以對數字進行數學運算,這些數學函數只處理 int 和 float 類型范圍內的值。接下來我們一起來學習常用的數學函數。

1、pi() 函數

pi()?:返回 PI 的值(圓周率值)。

echo pi(); // 輸出 "3.1415926535898"

2、min() 和 max() 函數

min():用于查找一系列參數中的最小值。

max():用于查找一系列參數中的最大值。

echo min(-3, -2, -1, 0, 1, 2, 3); // 輸出 "-3"
echo max(-3, -2, -1, 0, 1, 2, 3); // 輸出 "3"

3、abs() 函數

abs()?:返回一個數的絕對值。

echo abs(-3); // 輸出 "3"
echo abs(3); // 輸出 "3"

4、sqrt() 函數

sqrt()?:返回一個數的平方根。

sqrt() :返回一個數的平方根。

5、round() 函數

round()?:將浮點數四舍五入為最接近的整數。

echo round(6.7); // 輸出 "7"
echo round(6.49); // 輸出 "6"
echo round(-7.1); // 輸出 "-7"
echo round(-7.6); // 輸出 "-8"

6、隨機數

rand(min, max)?:返回隨機整數。

參數

描述

min,max

可選。規定隨機數產生的范圍。

如果沒有提供可選參數?min?和?max,rand()?返回 0 到 RAND_MAX 之間的偽隨機整數。例如,想要 10 到 100(包括 10 和 100)之間的隨機數,用?rand(10, 100)。?

echo rand(); // 輸出 "0 到 RAND_MAX 之間的偽隨機整數"
echo rand(10, 100); // 輸出 "10 到 100 之間的隨機整數"

三、常量

常量類似于變量,但一旦定義,它們就不能被更改或取消定義。

常量是一個簡單值的標識符(名稱)。在腳本執行期間,該值無法更改。有效的常量名以字母或下劃線開頭。與變量不同,常量在整個腳本中是自動全局的。

1、創建 PHP 常量

define(name, value, case-insensitive)?函數用于常量創建。

參數:

  • name: 指定常量的名稱
  • value: 指定常量的值
  • case-insensitive: 指定常量名稱是否不區分大小寫。如果設置為 true,則該常量不區分大小寫。默認是 false。

注意:PHP 7.3.0 起,廢棄定義不區分大小寫的常量。自 PHP 8.0.0 開始,只接受 false 值,傳遞 true 將產生警告。

創建一個區分大小寫的常量名稱:

define("greeting", "Hello World!");
echo greeting;

2、const 關鍵字

也可以使用?const?關鍵字創建常量。

const PI = 3.14;
echo PI;

3、const 與 define() 函數的區別

  • const?始終區分大小寫。
  • define()?具有不區分大小寫的選項。
  • const?不能在另一個塊作用域內創建,例如在函數內部或 if 語句內部。
  • define()?可以在另一個塊作用域內創建。

4、常量與變量的區別

常量和變量有如下不同:
  • 常量前面沒有美元符號($)。
  • 常量可以不用理會變量的作用域而在任何地方定義和訪問。
  • 常量一旦定義就不能被重新定義或者取消定義。
  • 常量只能計算標量值或數組。

四、魔術常量

有九個魔術常量它們的值隨著它們在代碼中的位置改變而改變。例如 __LINE__ 的值就依賴于它在腳本中所處的行來決定。這些特殊的常量不區分大小寫,除了 ClassName::class 常量外,這些魔術常量在開頭和結尾都帶有雙下劃線。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85162.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85162.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85162.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux lsof 命令詳解+實例

👨?🎓博主簡介 🏅CSDN博客專家 ??🏅云計算領域優質創作者 ??🏅華為云開發者社區專家博主 ??🏅阿里云開發者社區專家博主 💊交流社區:運維交流社區 歡迎大家的加入&#xff01…

【Cobalt Strike手冊】客戶端界面功能

工具欄 頂部的工具欄提供了快速訪問的功能,這些圖片的功能從左到右功能以此如下表 創建新的連接斷開當前的TeamServerListeners監聽器列表以圖形化展示表格形式展示表格展示目標管理Web服務查看獲取到的認證信息查看下載的文件查看鍵盤記錄查看截屏記錄 圖形化會話…

FastAPI本地文檔的定制技巧

磨刀不誤砍柴工,一份清晰的API文檔能讓前后端協作效率翻倍——源滾滾如是說 在前后端分離開發的今天,接口文檔的質量直接決定了團隊協作的效率。作為Python領域最受矚目的現代Web框架,FastAPI最大的亮點之一是其自動化交互式文檔功能。但很多…

Python 標準庫概覽

Python 標準庫非常龐大,所提供的組件涉及范圍十分廣泛,使用標準庫我們可以讓您輕松地完成各種任務。 以下是一些 Python3 標準庫中的模塊: os 模塊:os 模塊提供了許多與操作系統交互的函數,例如創建、移動和刪除文件和目錄,以及訪問環境變量等。 sys 模塊:sys 模塊提供…

AI大模型:(二)4.1 文生圖(Text-to-Image)模型發展史

目錄 1.介紹 2.發展歷史 2.1.早期探索階段(1980-2014 年) 2.1.1.卷積神經網絡(CNN) 2.1.2.生成對抗網絡(GAN)的提出 2.2.GAN主導時代(2015-2018 年) 2.2.1.高分辨率GAN的突破 2.2.2.文本-圖像對齊的改進 2.3. Diffusion革命(2021–2022) 2.3.1.擴散模型(D…

vue3實現輪播渲染多張圖每張進行放大縮小拖拽功能互不影響

vue3實現輪播渲染多張圖每張進行放大縮小拖拽功能互不影響 1.以vue3中el-carousel輪播插件為例 <div class"pic_view"><el-carousel height"100vh" :autoplay"false" ref"carouselRef" change"handleCarouselChange&qu…

traceroute 使用說明

1、概述 Traceroute&#xff08;Windows 系統中為 tracert&#xff09;是一種網絡診斷工具&#xff0c;用于跟蹤數據包從本地設備到目標主機的傳輸路徑&#xff0c;并顯示沿途經過的每一跳&#xff08;路由器&#xff09;的延遲和 IP 地址。它通過發送不同 TTL&#xff08;生存…

用idea操作git緩存區回退、本地庫回退、遠程庫回退

前言 使用idea軟件操作git非常人性化和方便。 但是如果我的代碼使用git提交之后,我想回到以前的版本,此時需要進行git的版本回退。 提交代碼分為提交到緩存區、本地庫、遠程庫這3個過程。 下面我將介紹每個階段的提交對應的回退方法。 本篇文章是掌握git和使用idea操作git…

webpack+vite前端構建工具 - 3webpack處理js

3 webpack處理js webpack的核心——處理js文件&#xff0c;將模塊化的代碼打包。具體操作如下 es6轉化&#xff08;為兼容老瀏覽器&#xff0c;將es6轉化為es5&#xff09; babel-loader 代碼規范&#xff08;例如空格&#xff0c;縮進等代碼風格規范&#xff09; eslint 代碼…

Nginx轉發中相對路徑資源302問題的分析與解決

Nginx轉發中相對路徑資源302問題的分析與解決 典型案例&#xff1a;后端頁面引入./test.css的302問題 問題場景 假設我們有一個后端服務&#xff0c;其頁面中通過相對路徑引入了CSS文件&#xff1a; <!-- 后端頁面代碼 --> <link rel"stylesheet" href&…

Vue3 + TypeScript合并兩個列表到目標列表,并且進行排序,數組合并、集合合并、列表合并、list合并

在Vue 3 TypeScript中合并并排序兩個列表&#xff0c;可以通過以下步驟實現&#xff1a; 解決方案代碼 vue 復制 下載 <script setup lang"ts"> import { ref, computed } from vue;// 定義列表項類型 interface ListItem {id: number;name: string;valu…

Python-教程

1 需求 2 接口 3 示例 4 參考資料 Python 教程 — Python 3.13.5 文檔

Excel數據導出小記

文章目錄 前言一、DataTable >EXCEL二、DBReader >Excel &#xff08;NPOI&#xff09;三、分頁查詢 DbReader>Excel (MiniExcel)總結&#xff1a; 前言 最近經歷了一次數據量比較大的導出&#xff0c;也做了各種優化嘗試&#xff0c;這里稍記錄一下 一、DataTable …

深入理解鏈表數據結構:從Java LinkedList到自定義實現

引言 鏈表作為基礎數據結構之一&#xff0c;在Java集合框架中以LinkedList的形式提供。本文將深入分析Java原生LinkedList的實現機制&#xff0c;并介紹我自定義實現的MyLinkedList&#xff0c;最后對比兩者的設計差異與實現特點。 Java原生LinkedList解析 基本結構 Java的…

【深度學習】卷積神經網絡(CNN):計算機視覺的革命性引擎

卷積神經網絡&#xff08;CNN&#xff09;&#xff1a;計算機視覺的革命性引擎 一、算法背景&#xff1a;視覺智能的進化之路1.1 傳統視覺處理的困境1.2 神經科學的啟示 二、算法理論&#xff1a;CNN的核心架構2.1 基礎組成單元卷積層&#xff1a;特征提取引擎池化層&#xff1…

使用@SpringJUnitConfig注解開發遇到的空指針問題

Spring測試中的版本陷阱&#xff1a;SpringJUnitConfig與JUnit版本兼容性深度解析 一個看似簡單的空指針異常&#xff0c;背后可能隱藏著JUnit版本不匹配的“幽靈”。 一、SpringJUnitConfig&#xff1a;Spring與JUnit 5的橋梁 SpringJUnitConfig是Spring TestContext框架為**…

[2025CVPR]AdcSR:一種高效實世界圖像超分辨率的對抗擴散壓縮方法

目錄 1. 背景與挑戰 2. AdcSR模型概述 2.1 模型架構 2.2 訓練策略 3. 公式與原理 4. 創新點 5. 實驗與結果 5.1 實驗設置 5.2 結果對比 5.3 消融實驗 6. 結論 在計算機視覺領域&#xff0c;圖像超分辨率&#xff08;Image Super-Resolution, ISR&#xff09;一直是一…

Go 語言中的字符串基本操作

這篇文章已經放到騰訊智能工作臺的知識庫啦&#xff0c;鏈接在這里&#xff1a;ima.copilot-Go 入門到入土。要是你有啥不懂的地方&#xff0c;就去知識庫找 AI 聊一聊吧。 本篇將詳細講解 Go 語言中與字符串相關的操作。 1、rune 和 字符串長度 1、Go 函數語法約定 在開始…

數學建模會議筆記

看似優化模型 建立整數規劃模型 用優化軟件、啟發式方法、精確方法求解 建立圖論和組合優化模型用組合優化方法、啟發式方法求解 建立博弈論模型 數據統計分析與可視化- 數據擬合、參數估計、插值、數據的標準化、去偽補全相關度分析、分類、聚類等 最優化理論和方法 線性規劃…

學習昇騰開發的六天--ACL應用開發之運行第一個實例

1、下載一個實例&#xff0c;運行一個圖像分類實例&#xff08;環境&#xff1a;Ubuntu22.04&#xff0c;硬件&#xff1a;昇騰310B1&#xff0c;加速模塊&#xff1a;atlas 200i a2&#xff09; samples: CANN Samples - Gitee.com 目錄結構如下&#xff1a; ├── data │…