PHP開發日志 ━━ 基礎知識:四種不同的變量返回方式該如何調用

最近在給框架升級,其中涉及到古早的緩存系統升級,現在準備區分類型為混合、變量和普通文件,那么變量用什么形式存儲到緩存才能給后續開發帶來便利和通用性呢?于是就涉及到了本文的php基礎知識。
好吧,又是一個無用的知識點~~
文件A.php中<?php return $a = array(1,2,3);?>
文件B.php中<?php $b = array(1,2,3);?>
文件C.php中<?php return array(1,2,3);?>
文件D.php中<?php array(1,2,3);?>
都用require后,調用a、b、c、d,有不同么?
又分別如何獲得其數組呢?

在這里插入圖片描述

這四個文件在用 require 引入時的行為是不同的,具體如下:


文件A.php

<?php return $a = array(1,2,3); ?>
  1. 行為

    • require 文件時,return 語句會使文件的執行結果作為 require 的返回值。
    • 因為 $a 是文件內部定義的變量,除非返回它,否則外部無法直接訪問。
  2. 如何獲得數組

    • require 的結果直接是返回的值,即 $a 的值。
    • 示例:
      $result = require 'A.php'; // $result = [1, 2, 3]
      
  3. 注意require 并不會將 $a 導入到調用文件的作用域中。


文件B.php

<?php $b = array(1,2,3); ?>
  1. 行為

    • 沒有 return,文件被 require 時,$b 會在文件本身的作用域中被定義。
    • 但由于它沒有被導出,外部文件無法直接訪問 $b
  2. 如何獲得數組

    • 需要在調用文件中全局定義 $b,因為 require 會將文件代碼插入到調用點。
    • 示例:
      require 'B.php'; 
      print_r($b); // [1, 2, 3]
      
  3. 注意$b 變量必須存在于全局作用域中,否則會報未定義的變量錯誤。


文件C.php

<?php return array(1,2,3); ?>
  1. 行為

    • 文件的返回值是數組 [1, 2, 3]
    • require 時,返回值會直接作為 require 的結果。
  2. 如何獲得數組

    • require 的結果就是數組。
    • 示例:
      $result = require 'C.php'; // $result = [1, 2, 3]
      
  3. 注意:與文件A的行為類似,但更簡潔。


文件D.php

<?php array(1,2,3); ?>
  1. 行為

    • 文件中定義了一個數組,但沒有任何變量存儲它,也沒有返回值。
    • require 時,數組只是在文件中被創建了一次,但沒有對調用者產生影響。
  2. 如何獲得數組

    • 這種情況下,無法直接通過 require 獲取數組,因為它既沒有返回值,也沒有賦值給任何變量。
    • 示例:
      require 'D.php'; // 沒有任何作用
      

總結

文件數組如何獲得特點
A.php$result = require 'A.php';return 返回 $a 的值,但 $a 不會導入調用作用域。
B.phprequire 'B.php'; print_r($b);$b 必須手動訪問,且作用域受限。
C.php$result = require 'C.php';簡單明了,直接返回數組。
D.php無法獲得數組未存儲或返回,無法在調用方訪問。

如果需要直接在調用方獲取數組,推薦使用文件C的方式,因為它最簡潔且作用域清晰。

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

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

相關文章

概率論得學習和整理30: 用EXCEL 描述泊松分布 poisson distribution

目錄 1 泊松分布的基本內容 1.1 泊松分布的關鍵點 1.1.1 屬于離散分布 1.1.2 泊松分布的特點&#xff1a;每個子區間內概率相等 &#xff0c; λ就是平均概率 1.2 核心參數 1.3 pmf公式 1.4 期望和方差 2 例1&#xff1a;用EXCEL計算泊松分布的概率 3 比較λ不同值時…

Java中的垃圾收集器

文章目錄 1. 理解不同類型的垃圾收集器1.1 Serial 收集器1.2 Parallel (吞吐量) 收集器1.3 CMS (Concurrent Mark-Sweep) 收集器1.4 G1 (Garbage First) 收集器1.5 ZGC 和 Shenandoah GC1.6 Epsilon GC1.7 ParNew 收集器1.8 Zing (Azul Systems) 2. 優化垃圾收集器的選擇和配置…

測試工程師八股文05|功能測試、業務測試

一、基礎概念 1、軟件測試分類 1??按照軟件產生的階段劃分 單元測試&#xff1a;針對程序源代碼進行測試【開發自測】集成測試&#xff1a;針對模塊之間功能交互進行測試系統測試&#xff1a;對整個系統&#xff08;功能、非功能&#xff09;進行全面測試驗收測試&#xff…

圖(dfs與bfs)算法2

進度&#xff1a;15/100 原題1&#xff1a; 給你一棵二叉樹的根節點 root &#xff0c;翻轉這棵二叉樹&#xff0c;并返回其根節點。 &#xff08;力扣的圖&#xff09; 原題2&#xff1a; 給定二叉樹的根節點 root &#xff0c;返回所有左葉子之和。 原題3&#xff1a; 給…

《鴻蒙開發-答案之書》字符串占位符格式化

《鴻蒙開發-答案之書》字符串占位符格式化 先在string.json定義&#xff1a; {"name":"message_arrive","value":"We will arrive at %s."}使用&#xff0c;它有兩種使用方式&#xff1a; 方式一&#xff1a; Text($r(app.string.…

Redis bitmaps 使用

應用場景&#xff1a; 記錄id為 1 的用戶&#xff0c;2024年12月簽到情況&#xff0c;并統計&#xff1b; 記錄 1號簽到 zxys-redis:0>setbit 1:202412 1 1 記錄 2號簽到 zxys-redis:0>setbit 1:202412 2 1 記錄 3號未簽到 zxys-redis:0>setbit 1:202412 3 0 …

【微服務】SpringBoot 整合Redis Stack 構建本地向量數據庫相似性查詢

目錄 一、前言 二、向量數據庫介紹 2.1 什么是向量數據庫 2.2 向量數據庫特點 2.3 向量數據庫使用場景 三、常用的向量數據庫解決方案 3.1 Milvus 3.1.1 Milvus是什么 3.1.2 Milvus主要特點 3.2 Faiss 3.2.1 Faiss是什么 3.2.2 Faiss主要特點 3.3 Pinecone 3.3.1 …

【數據庫】大二數據庫復習范圍 (快速版)幫助你快速復習數據庫

第一章 1. 信息=數據+語義 2:數據庫管理系統(database management system, DBMS) 3. 數據庫系統(database system, DBS)由數據庫、數據庫用戶、計算機硬件系統和計算機軟件系統等幾部分組成 4. 數據模型按應用層次可分為概念模型、邏輯模型和物理模型。 5.每個二維表…

FMIKit-Simulink 常見問題解決方案

將解壓后的文件夾添加到 MATLAB 路徑中&#xff1a; addpath(fullfile(pwd, FMIKit-Simulink-3.1));初始化 FMIKit&#xff1a; FMIKit.initialize(); 設置求解器rtwsfcnfmi.tlc、或grtfmi.tlc再CtrlB即可。 幫助文檔可查看導出FUM和導入FMU。 FMIKit-Simulink-3.1\html\index…

UE UMG 多級彈出菜單踩坑

多級彈出菜單 https://www.bilibili.com/video/BV1ub411J7nA 運行時添加 widget 的方法 create widget 然后 add child 到某個組件&#xff0c;比如 canvas 運行時修改 widget 位置的方法 set widget slot position 用起來沒效果 懷疑是因為我沒有傳入 slot 但是暫時不知…

sunset: midnight

https://www.vulnhub.com/entry/sunset-midnight,517/ 主機發現端口掃描 探測存活主機&#xff0c;8是靶機 nmap -sP 192.168.56.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-05 16:49 CST Nmap scan report for 192.168.56.1 …

【PyTorch】動態調整學習率 torch.optim.lr_scheduler.StepLR 調度器

文章目錄 1. torch.optim.lr_scheduler.StepLR 官方文檔詳解2. 使用示例2.1 官方提供使用示例2.2 自己寫代碼測試方法2.2.1 get_last_lr() 方法2.2.2 state_dict() 方法2.2.3 load_state_dict() 保存和加載調度器 3. 思考3.1 為什么需要state_dict()3.2 get_lr() 與 get_last_l…

伊克羅德與九科信息共同發布RPA+AI智能機器人解決方案

12月12日&#xff0c;伊克羅德信息在上海舉辦“創見AI&#xff0c;邁進智能化未來——科技賦能零售電商”活動&#xff0c;與九科信息、亞馬遜云科技共同探討與分享&#xff0c;融合生成式AI技術和智能自動化&#xff08;RPA,Robotic Process Automation&#xff09;在電商零售…

hutool一些典型的方法使用筆記

hutool一些典型的方法使用筆記 1 克隆1.1 深克隆 2類型轉換2.1其他類型轉換為字符串2.2 轉換為日期對象2.3 數組轉集合2.4 Unicode和字符串轉換2.5 數字轉中文 文檔地址&#xff1a;https://blog.csdn.net/dxjren/article/details/144468399 1 克隆 1.1 深克隆 定義一個實體類…

QT實戰經驗總結 連載中

QT實戰經驗總結 在看書系統學習后&#xff0c;就開始實戰了&#xff0c;會遇到很多問題1.信號和槽的思考2.在python 或 C 代碼中&#xff0c;對 QML 代碼中控件的調用關于在一個窗口上不斷打開新窗口 在看書系統學習后&#xff0c;就開始實戰了&#xff0c;會遇到很多問題 pyt…

從 CephFS 到 JuiceFS:同程旅行億級文件存儲平臺構建之路

隨著公司業務的快速發展&#xff0c;同程旅行的非結構化的數據突破 10 億&#xff0c;在 2022 年&#xff0c;同程首先完成了對象存儲服務的建設。當時&#xff0c;分布式文件系統方面&#xff0c;同程使用的是 CephFS&#xff0c;隨著數據量的持續增長&#xff0c;CephFS 的高…

固定資產分類,提升資產盤活效益

固定資產是企業長期使用的重要資源&#xff0c;涵蓋范圍廣、種類多&#xff0c;不同的資產需要針對性管理。通過科學的分類與高效的盤活策略&#xff0c;不僅可以優化資源配置&#xff0c;還能提升企業資產的利用效率和經濟效益。以下將詳細解析固定資產的分類方式和盤活效益的…

富途證券C++面試題及參考答案

C++ 中堆和棧的區別 在 C++ 中,堆和棧是兩種不同的內存區域,它們有許多區別。 從內存分配方式來看,棧是由編譯器自動分配和釋放的內存區域。當一個函數被調用時,函數內的局部變量、函數參數等會被壓入棧中,這些變量的內存空間在函數執行結束后會自動被釋放。例如,在下面的…

【字符串匹配算法——BF算法】

&#x1f308;個人主頁: Aileen_0v0 &#x1f525;熱門專欄: 華為鴻蒙系統學習|計算機網絡|數據結構與算法 ?&#x1f4ab;個人格言:“沒有羅馬,那就自己創造羅馬~” 文章目錄 BF算法介紹及過程演示代碼實現過程下節預告KMP算法利用next數組存儲子串中j回退的位置&#xff08;…

Linux 文件系統目錄結構及其簡要介紹

Hello! 親愛的小伙伴們&#xff0c;大家好呀&#xff08;Smile~&#xff09;&#xff01;我是 H u a z z i Huazzi Huazzi&#xff0c;歡迎觀看本篇博客&#xff0c;接下來讓我們一起來學習一下Linux 文件系統目錄結構吧&#xff01;祝你有所收獲&#xff01; 本篇博客的目錄&a…