php變量

什么叫變量?

變量可以通過變量名訪問。在指令式語言中,變量通常是可變的; 這里就先這么簡單理解,通過對語言的研究會更加的理解變量的其他意義。

在PHP中變量是用于存儲信息的"容器":

<?php 
$x=5; 
$y=6; 
$z=$x+$y; 
echo $z; 
?>

  

與代數類似

x=5?
y=6?
z=x+y

在代數中,我們使用字母(如 x),并給它賦值(如 5)。

從上面的表達式 z=x+y ,我們可以計算出 z 的值為 11。

在 PHP 中,這些字母被稱為變量


變量可以是很短的名稱(如 x 和 y)或者更具描述性的名稱(如 age、carname、totalvolume)。

與代數類似,可以給 PHP 變量賦予某個值(x=5)或者表達式(z=x+y)。

PHP 變量規則:

  • 變量以 $ 符號開始,后面跟著變量的名稱
  • 變量名必須以字母或者下劃線字符開始
  • 變量名只能包含字母數字字符以及下劃線(A-z、0-9 和 _ )
  • 變量名不能包含空格
  • 變量名是區分大小寫的($y 和 $Y 是兩個不同的變量)

?

PHP 沒有聲明變量的命令。

變量在您第一次賦值給它的時候被創建:

<?php 
$txt="Hello world!"; 
$x=5; 
$y=10.5; 
?>

?

在上面的語句執行中,變量?txt?將保存值?Hello world!,且變量?x?將保存值?5

注釋:當您賦一個文本值給變量時,請在文本值兩側加上引號。

PHP 是一門弱類型語言

在上面的實例中,我們注意到,不必向 PHP 聲明該變量的數據類型。

PHP 會根據變量的值,自動把變量轉換為正確的數據類型。

在強類型的編程語言中,我們必須在使用變量前先聲明(定義)變量的類型和名稱。

PHP 變量作用域

變量的作用域是腳本中變量可被引用/使用的部分。

PHP 有四種不同的變量作用域:

  • local? ? ?局部的
  • global? ? ?全局
  • static? ? ?靜態的(作用域)
  • parameter? ? 參數(作用域)

什么是作用域?

? ? ? 作用域(scope),程序設計概念,通常來說,一段程序代碼中所用到的名字并不總是有效/可用的,而限定這個名字的可用性的代碼范圍就是這個名字的作用域。作用域的使用提高了程序邏輯的局部性,增強程序的可靠性,減少名字沖突。

局部和全局作用域

在所有函數外部定義的變量,擁有全局作用域。除了函數外,全局變量可以被腳本中的任何部分訪問,要在一個函數中訪問一個全局變量,需要使用 global 關鍵字。

在 PHP 函數內部聲明的變量是局部變量,僅能在函數內部訪問:

<?php 
$x=5; // 全局變量 function myTest() 
{ $y=10; // 局部變量 echo "<p>Test variables inside the function:<p>"; echo "Variable x is: $x"; echo "<br>"; echo "Variable y is: $y"; 
} myTest(); echo "<p>Test variables outside the function:<p>"; 
echo "Variable x is: $x"; 
echo "<br>"; 
echo "Variable y is: $y"; 
?>

  這里的結果:

Test variables inside the function:Variable x is: 
Variable y is: 10Test variables outside the function:Variable x is: 5
Variable y is:

  


在以上實例中 myTest() 函數定義了 $x 和 $y 變量。 $x 變量在函數外聲明,所以它是全局變量 , $y 變量在函數內聲明所以它是局部變量。

當我們調用myTest()函數并輸出兩個變量的值, 函數將會輸出局部變量 $y 的值,但是不能輸出 $x 的值,因為 $x 變量在函數外定義,無法在函數內使用,如果要在一個函數中訪問一個全局變量,需要使用 global 關鍵字。

然后我們在myTest()函數外輸出兩個變量的值,函數將會輸出全局部變量 $x 的值,但是不能輸出 $y 的值,因為 $y 變量在函數中定義,屬于局部變量。


global 關鍵字

global 關鍵字用于函數內訪問全局變量。

在函數內調用函數外定義的全局變量,我們需要在函數中的變量前加上 global 關鍵字:

<?php 
$x=5; 
$y=10; function myTest() 
{ 
global $x,$y; 
$y=$x+$y; 
} myTest(); 
echo $y; // 輸出 15 
?>

PHP 將所有全局變量存儲在一個名為 $GLOBALS[index] 的數組中。?index?保存變量的名稱。這個數組可以在函數內部訪問,也可以直接用來更新全局變量。

上面的實例可以寫成這樣:

<?php 
$x=5; 
$y=10; function myTest() 
{ 
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y']; 
} myTest(); 
echo $y; //這里的結果同樣為 15
?>

  

static 作用域

當一個函數完成時,它的所有變量通常都會被刪除。然而,有時候您希望某個局部變量不要被刪除。

要做到這一點,請在您第一次聲明變量時使用?static?關鍵字:

<?php function myTest() 
{ 
static $x=0; 
echo $x; 
$x++; //表示+1
} myTest(); 
myTest(); 
myTest(); ?>

  

這里的結果:
0
1
2
3
4

  當你再調用函數myTest()的時候結果為 5。

然后,每次調用該函數時,該變量將會保留著函數前一次被調用時的值。

注釋該變量仍然是函數的局部變量。

參數作用域

參數是通過調用代碼將值傳遞給函數的局部變量。

參數是在參數列表中聲明的,作為函數聲明的一部分:

<?php function myTest($x) 
{ 
echo $x; 
} myTest(5); ?>

  這里就是函數引用了參數 $x ,在調用函數時 5 就是那個參數 $x.

默認情況下,函數參數通過值傳遞(因而即使在函數內部改變參數的值,它并不會改變函數外部的值)。如果希望允許函數修改它的參數值,必須通過引用傳遞參數。

如果想要函數的一個參數總是通過引用傳遞,可以在函數定義中該參數的前面加上符號 &:

<?php
function add_some_extra(&$string)
{$string .= 'and something extra.';  //等號前面的.是PHP語言的一種簡寫方式,左邊的等式也可寫為 $string = $string.'and someting extra';
}
$str = 'This is a string, ';
add_some_extra($str);
echo $str;    // 結果: 'This is a string, and something extra.'
?>

  

關于變量這塊就寫這么多了,368711665 這個是我自己建的群,希望大家可以共同學習討論

轉載于:https://www.cnblogs.com/average/p/7922658.html

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

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

相關文章

js將base64做UrlEncode轉碼

使用 encodeURIComponent() 其詳細介紹 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent var base64 &#xff08;base64值&#xff09;encodeURIComponent(base64 ) //轉化 轉載于:https://www.cnblogs.com/xll-qg/p…

引用自己創建的css樣式表_如何使用CSS創建聯系表

引用自己創建的css樣式表First we create the HTML elements - input fields for First Name, Last Name, Email and a Text Area for the message.首先&#xff0c;我們創建HTML元素-名字&#xff0c;姓氏&#xff0c;電子郵件和消息的文本區域的輸入字段。 Later we apply C…

leetcode 1449. 數位成本和為目標值的最大數字(dp)

這是我參與更文挑戰的第12天 &#xff0c;活動詳情查看更文挑戰 題目 給你一個整數數組 cost 和一個整數 target 。請你返回滿足如下規則可以得到的 最大 整數&#xff1a; 給當前結果添加一個數位&#xff08;i 1&#xff09;的成本為 cost[i] &#xff08;cost 數組下標…

風能matlab仿真_風能產量預測—深度學習項目

風能matlab仿真DL DATATHON- AI4ImpactDL DATATHON- AI4影響 Published by Team AI Traders — Suyash Lohia, Nguyen Khoi Phan, Nikunj Taneja, Naman Agarwal and Mihir GuptaAI交易員團隊發布 -Suyash Lohia&#xff0c;Nguyen Khoi Phan&#xff0c;Nikonj Taneja&#x…

android JNI調用(Android Studio 3.0.1)(轉)

最近回頭復習了一下android 的jni調用&#xff0c;卻發現按以前的方法調用失敗&#xff0c;一怒之下就重新摸索&#xff0c;碰了幾次壁&#xff0c;發現網上好多教程都不能成功調用&#xff0c;于是記錄一下現在AS版本成功好用的調用方法。 這里設定你的ndk已經下載并且設置沒問…

安卓源碼 代號,標簽和內部版本號

SetupSecurityPortingTuningCompatibilityReference轉到源代碼Getting Started OverviewCodelines, Branches, and ReleasesCodenames, Tags, and Build NumbersProject RolesBrand GuidelinesLicensesFAQSite UpdatesDownloading and Building RequirementsEstablishing a Bui…

git 列出標簽_Git標簽介紹:如何在Git中列出,創建,刪除和顯示標簽

git 列出標簽Tagging lets developers mark important checkpoints in the course of their projects development. For instance, software release versions can be tagged. (Ex: v1.3.2) It essentially allows you to give a commit a special name(tag).通過標記&#xff…

leetcode 278. 第一個錯誤的版本(二分)

題目 你是產品經理&#xff0c;目前正在帶領一個團隊開發新的產品。不幸的是&#xff0c;你的產品的最新版本沒有通過質量檢測。由于每個版本都是基于之前的版本開發的&#xff0c;所以錯誤的版本之后的所有版本都是錯的。 假設你有 n 個版本 [1, 2, …, n]&#xff0c;你想找…

騰訊哈勃_用Python的黑客統計資料重新審視哈勃定律

騰訊哈勃Simple OLS Regression, Pairs Bootstrap Resampling, and Hypothesis Testing to observe the effect of Hubble’s Law in Python.通過簡單的OLS回歸&#xff0c;配對Bootstrap重采樣和假設檢驗來觀察哈勃定律在Python中的效果。 In this post, we will revisit Hub…

JAVA中動態編譯的簡單使用

一、引用庫 pom文件中申明如下&#xff1a; <dependencies><!-- https://mvnrepository.com/artifact/junit/junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><…

程序員實用小程序_我從閱讀《實用程序員》中學到了什么

程序員實用小程序In short: old but gold.簡而言之&#xff1a;古老而又黃金。 Published in 1999, The Pragmatic Programmer is a book about how to become a Pragmatic Programmer. Which really means a ‘Good Programmer’. 《實用程序員》于1999年出版&#xff0c;是一…

leetcode 5786. 可移除字符的最大數目(二分法)

題目 給你兩個字符串 s 和 p &#xff0c;其中 p 是 s 的一個 子序列 。同時&#xff0c;給你一個元素 互不相同 且下標 從 0 開始 計數的整數數組 removable &#xff0c;該數組是 s 中下標的一個子集&#xff08;s 的下標也 從 0 開始 計數&#xff09;。 請你找出一個整數…

如何使用Picterra的地理空間平臺分析衛星圖像

From April-May 2020, Sentinel-Hub had organized the third edition of their custom script competition. The competition was organized in collaboration with the Copernicus EU Earth Observation programme, the European Space Agency and AI4EO consortium.從2020年…

df -l查看本地文件系統

df -l, --locallimit listing to local file systems 轉載于:https://www.cnblogs.com/jonathanyue/p/9301222.html

在Packet Tracer中路由器靜態路由配置

實驗目標&#xff1a;<1>掌握靜態路由的配置方法和技巧<2>掌握通過靜態路由方式實現網絡的連通性<3>熟悉廣域網線纜的鏈接方式技術原理&#xff1a;<1>路由器屬于網絡層設備&#xff0c;能夠根據IP包頭的信息&#xff0c;選擇一條最佳路徑&#xff0c;…

python示例_帶有示例的Python功能指南

python示例Python函數簡介 (Introduction to Functions in Python) A function allows you to define a reusable block of code that can be executed many times within your program.函數允許您定義一個可重用的代碼塊&#xff0c;該代碼塊可以在程序中多次執行。 Function…

leetcode 852. 山脈數組的峰頂索引(二分查找)

題目 符合下列屬性的數組 arr 稱為 山脈數組 &#xff1a; arr.length > 3 存在 i&#xff08;0 < i < arr.length - 1&#xff09;使得&#xff1a; arr[0] < arr[1] < … arr[i-1] < arr[i] arr[i] > arr[i1] > … > arr[arr.length - 1] 給你由…

hopper_如何利用衛星收集的遙感數據輕松對蚱hopper中的站點進行建模

hopper建筑學與數據科學 (Architectonics and Data Science) Understanding the site and topography are crucial first step of any architectural project. Site modelling can become very daunting, expensive, or just cumbersome, often having to use various software…

Git 倉庫代碼遷移步驟記錄

遷移遠程倉庫 // 克隆舊倉庫鏡像 git clone --mirror [oldRepoUrl]// 添加新倉庫地址 cd the_repo git remote add [remoteName] [newRepoUrl]// 推到新的遠程庫 git push -f --tags [remoteName] refs/heads/*:refs/heads/* 復制代碼中括號中的名稱需根據自己項目需求替換 更新…

TensorFlow MNIST 入門 代碼

其實就是按照TensorFlow中文教程的內容一步步跟著敲的代碼。 不過在運行代碼的時候遇到代碼中加載不到MNIST數據資源&#xff0c;似乎是被墻了&#xff08;(⊙﹏⊙)b&#xff09; 于是自己手動下載了數據包&#xff0c;放到 MNIST_data/ 文件夾下&#xff0c;代碼就能正常運轉了…