請問關於php代碼運行順序問題

來源:互聯網
上載者:User
麻煩會的朋友幫忙回答下 以下的問題, 謝謝啦。
在網上下載了套代碼。 如下 admin.php 檔案:
對於以下這段代碼, 究竟代碼是怎麼跑的呢?
也就是比如說 以下的代碼,什麼時候 才會跑 if ($device == 'ipad') 這句代碼呢?

即 想表達以下 這種意思:
在php的代碼中 有時候看到 以下這種情況:
那麼, 什麼時候 就會運行到 if (xxw ) xxxcc;呢?
如果 不沒有運行 function xxxc ()這個函數, 會運行到 if (xxw ) xxxcc;嗎? (不知道說得清楚了沒)

if (xxx)xxx;

function xxxa () {

}

function xxxc () {

}

if (xxw ) xxxcc;

?>


//-----------------------------------------------

require 'Service/Init.php';

$act = Get('act');

if (!isset($act{0})){
$act = 'pda';

。。。
。。。
function HavePermissions($pid){
。。。。。
if ($GLOBALS['user']->HavePermissions($pid))
return true;
SetLocation(-1, '你的許可權不足');
}


if ($device == 'ipad')
SetMe('abc', 'width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no');

SetTitle('後台管理');

?>


回複討論(解決方案)

代碼運行順序 從上至下啊

代碼運行順序 從上至下啊



謝謝 microlab2009 回複
麻煩再幫忙回複下。
其實我想說的是:
function HavePermissions($pid){
。。。。。
if ($GLOBALS['user']->HavePermissions($pid))
return true;
SetLocation(-1, '你的許可權不足');
}


如果 以上這個函數 不啟動並執行話, 是不是以下這段代碼 就不會 跑了呢?
if ($device == 'ipad')
SetMe('abc', 'width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no');

SetTitle('後台管理');

function HavePermissions($pid){
是函數定義,與運行順序無關

function HavePermissions($pid){
是函數定義,與運行順序無關



謝謝 xuzuning 版主的回複

我還想確認下,按照您的意思, 我能這樣理解以下這段代碼嗎?

以下的代碼 運行順序結果是:

$act = Get('act'); --》 if (!isset($act{0})){} --> if ($device == 'ipad') -> SetTitle('後台管理');

也就是 沒有跑 function HavePermissions() 這個函數 而直接跳到 運行 if ($device == 'ipad') 這句代碼


require 'Service/Init.php';

$act = Get('act');

if (!isset($act{0})){
$act = 'pda';

function HavePermissions($pid){
。。。。。
if ($GLOBALS['user']->HavePermissions($pid))
return true;
SetLocation(-1, '你的許可權不足');
}

if ($device == 'ipad')
SetMe('abc', 'width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no');

SetTitle('後台管理');

?>

不是沒有跑 function HavePermissions()
而是 function HavePermissions()本身不影響執行的順序

如果是沒有跑 function HavePermissions()
那麼如果後面(或前面)有 HavePermissions() 那不就一團糟了嗎

不是沒有跑 function HavePermissions()
而是 function HavePermissions()本身不影響執行的順序

如果是沒有跑 function HavePermissions()
那麼如果後面(或前面)有 HavePermissions() 那不就一團糟了嗎



謝謝 xuzuning 版主 回複

我還有點不太明白 ,還想問下。

比如說 定義了 一個函數 abc,而這個函數abc在這個 admin.php這個頁面上是沒有被調用的。或者說 只是單單定義了,而沒有
使用到。

那麼以下代碼的 運行順序 能這麼理解嗎?

$act = Get('act'); if (!isset($act{0})){ } --》 if ($device == 'ipad')


也就是說 運行完這個if (!isset($act{0})){ } 就直接跳到 if ($device == 'ipad')。而 沒有運行 這個函數function abc()
能這麼理解嗎?

require 'Service/Init.php';

$act = Get('act');

if (!isset($act{0})){
$act = 'pda';

function abc($pid){
。。。。。

}

if ($device == 'ipad')
SetMe('abc', 'width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no');

SetTitle('後台管理');

?>

定義是定義,執行是執行。這是兩個不同的概念
不要自己把自己的思路攪亂了

雖然 php 允許你書寫調用在前,定義在後的代碼
但這是 php 在內部保證了 先定義,後使用 的原則
也就是說, 在執行期間,所有定義都已經執行過了

定義是定義,執行是執行。這是兩個不同的概念
不要自己把自己的思路攪亂了

雖然 php 允許你書寫調用在前,定義在後的代碼
但這是 php 在內部保證了 先定義,後使用 的原則
也就是說, 在執行期間,所有定義都已經執行過了



謝謝 xuzuning 版主的回複

還想最後問一個問題,麻煩再回複下, 剛接觸php,很多不解。先謝啦

$act = Get('act');

if (!isset( $act{0} )){
$act = 'pda'; }

if 語句中 isset($act{0}) 這句話應該怎麼理解呢? 特別是 $act{0} 這個0 代碼的是什麼意思呢?
isset($act{0}) 是表示 act()中第0位置的變數是否定義和存在。好想這樣說不通。



isset($act{0}) 是表示 $act 的第0位置是否定義和存在

$a = '';var_dump(isset($a{0}));
bool(false)
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.