php面試常問方法匯總

      網(wǎng)友投稿 742 2025-03-31

      global定義的全局常量和$GLOBALS的區(qū)別


      $GLOBALS(超全局變量) — 引用全局作用域中可用的全部變量, 一個包含了全部變量的全局組合數(shù)組。變量的名字就是數(shù)組的鍵

      function test() {

      $foo = "local variable";

      echo 'GLOBALS: ' . $GLOBALS["foo"] . "\n";

      echo '$foo in current scope: ' . $foo . "\n";

      }

      $foo = "Example content";

      test();

      ?>

      //結(jié)果

      GLOBALS:Example content

      $foo in current scope:local variable

      global的作用是定義全局變量,但是這個全局變量不是應(yīng)用于整個網(wǎng)站,而是應(yīng)用于當前頁面,包括include或require的所有文件

      使用關(guān)鍵字“global”你就可以把全局數(shù)據(jù)導(dǎo)入到一個函數(shù)的局部范圍內(nèi)

      $a = 1;

      $b = 2;

      function Sum()

      {

      global $a, $b; //如果沒有全局變量global在方法內(nèi)是不能獲得$a,$b值的

      $b = $a + $b;

      }

      Sum();

      echo $b;

      ?>

      //結(jié)果

      3

      在函數(shù)體內(nèi)定義的global變量,函數(shù)體外可以使用,在函數(shù)體外定義的global變量不能在函數(shù)體內(nèi)使用

      global $a;

      $a=123; //必須分開賦值

      function f() {

      echo $a; //錯誤

      }

      //再看看下面一例

      function f() {

      global $a;

      $a=123;

      }

      f();

      echo $a; //正確,可以使用

      const 定義的常量和define()定義的常量的區(qū)別

      1.const用于類成員變量的定義,一經(jīng)定義,不可修改。define不可以用于類成員變量的定義,可用于全局常量。

      2.const可在類中使用,define不能(一般是define在類外定義常量,const在類內(nèi)定義常量)

      3.const不能再條件語句中定義常量

      if (...){const FOO = 'BAR'; // 無效的invalid

      }if (...) {

      define('FOO', 'BAR'); // 有效的valid

      }

      ?>

      4.const采用普通的常量名稱,define可以采用表達式作為名稱

      const FOO = 'BAR';

      for ($i = 0; $i < 32; ++$i) {

      define('BIT_' . $i, 1 << $i);

      }

      ?>

      5.const只能接受靜態(tài)的標量,而define可以采用任何表達式

      const BIT_5 = 1 << 5; // 無效的invalid

      define('BIT_5', 1 << 5); // 有效的valid

      ?>

      6.const定義的常量時大小寫敏感,而define可以通過第三個參數(shù)(為true表示大小寫不敏感)來指定大小寫是否敏感

      define('FOO', 'BAR', true);

      echo FOO; // BAR

      echo foo; // BAR

      ?>

      7.const是語言結(jié)構(gòu),define是函數(shù),const更快

      PHP排序函數(shù)

      sort() 函數(shù)用于對數(shù)組單元從低到高進行排序。

      rsort() 函數(shù)用于對數(shù)組單元從高到低進行排序。

      asort() 函數(shù)用于對數(shù)組單元從低到高進行排序并保持索引關(guān)系。

      arsort() 函數(shù)用于對數(shù)組單元從高到低進行排序并保持索引關(guān)系。

      ksort() 函數(shù)用于對數(shù)組單元按照鍵名從低到高進行排序。

      krsort() 函數(shù)用于對數(shù)組單元按照鍵名從高到低進行排序。

      參考文章

      array_multisort:對列表型二維數(shù)組排序

      $data = array();

      $data[] = array('volume' => 67, 'edition' => 2);

      $data[] = array('volume' => 86, 'edition' => 1);

      $data[] = array('volume' => 85, 'edition' => 6);

      $data[] = array('volume' => 98, 'edition' => 2);

      $data[] = array('volume' => 86, 'edition' => 6);

      $data[] = array('volume' => 67, 'edition' => 7);

      $volume = array_column($data,'volume');

      $edition = array_column($data,'edition');

      //按照volume升序排

      array_multisort($volume,SORT_ASC,$data);

      //按照volume升序排,volume一樣就按照edition降序排

      //array_multisort($volume,SORT_ASC,$edition,SORT_DESC,$data);

      print_r($data);

      str_repeat

      str_repeat() 函數(shù)把字符串重復(fù)指定的次數(shù)。

      echo str_repeat("Shanghai",2);

      //結(jié)果:ShanghaiShanghai

      strstr

      搜索字符串在另一字符串中的第一次出現(xiàn)

      查找 "Shanghai" 在 "I loveShanghai! and Shanghai" 中的第一次出現(xiàn),并返回字符串的剩余部分【包含第二個參數(shù)本身】

      echo?strstr("I?loveShanghai!?and?Shanghai","Shanghai");//Shanghai!?and?Shanghai

      第三個參數(shù)默認false,如果設(shè)置為 "true",它將返回 第二個參數(shù)第一次出現(xiàn)之前的字符串部分【不包含第二個參數(shù)本身】

      echo?strstr("I?loveShanghai!?and?Shanghai","Shanghai",true);//I?love

      該函數(shù)對大小寫敏感。如需進行不區(qū)分大小寫的搜索,請使用 stristr() 函數(shù)

      array_filter

      回調(diào)函數(shù)過濾數(shù)組中的單元(文檔)

      大部分可以用來過濾數(shù)組空的元素

      $data = [1,0,3,false,'',null,"tom",'0'];

      print_r(array_filter($data));

      //結(jié)果

      Array

      (

      [0] => 1

      [2] => 3

      [6] => tom

      )

      回調(diào)函數(shù)的時候(該函數(shù)把輸入數(shù)組中的每個鍵值傳給回調(diào)函數(shù)。如果回調(diào)函數(shù)返回 true,則把輸入數(shù)組中的當前鍵值返回結(jié)果數(shù)組中,如果是false就不返回。數(shù)組鍵名保持不變,原數(shù)組不變):

      $arr = ['a','b',1,2,3];

      $new_arr = array_filter($arr,function($val){

      return is_numeric($val); //過濾不是數(shù)字的值,is_numeric返回bool值

      });

      print_r($new_arr);

      //結(jié)果:

      Array

      (

      [2] => 1

      [3] => 2

      [4] => 3

      )

      array_pop

      彈出數(shù)組最后一個單元(出棧),原來的數(shù)據(jù)中將不不再有最后一個值了。

      $data = [1, 2, 3, 4];

      print_r(array_pop($data));

      //結(jié)果:

      4

      $data = [

      [

      'name' => 'xxx',

      'age' => 12

      ],

      [

      'name' => 'yyy',

      'age' => 20

      ],

      [

      'name' => 'zzz',

      'age' => 30

      ]

      ];

      print_r(array_pop($data));

      //結(jié)果:

      Array

      (

      [name] => zzz

      [age] => 30

      )

      array_shift

      第一個單元移出并作為結(jié)果返回,將 array 的長度減一并將所有其它單元向前移動一位。所有的數(shù)字鍵名將改為從零開始計數(shù),文字鍵名將不變。

      $data = [1, 2, 3, 4];

      print_r(array_shift($data));

      print_r($data);

      //結(jié)果:

      1

      Array

      (

      [0] => 2

      [1] => 3

      [2] => 4

      )

      $data = [

      [

      'name' => 'xxx',

      'age' => 12

      ],

      [

      'name' => 'yyy',

      'age' => 20

      ],

      [

      'name' => 'zzz',

      'age' => 30

      ]

      ];

      print_r(array_shift($data));

      print_r($data);

      //結(jié)果:

      Array

      (

      [name] => xxx

      [age] => 12

      )

      Array

      (

      [0] => Array

      (

      [name] => yyy

      [age] => 20

      )

      php面試常問方法匯總

      [1] => Array

      (

      [name] => zzz

      [age] => 30

      )

      )

      array_slice

      截取數(shù)組

      $data = [1, 2, 3, 4];

      print_r(array_slice($data,1,2));

      print_r(array_slice($data,-1,1));

      //結(jié)果:

      Array

      (

      [0] => 2

      [1] => 3

      )

      Array

      (

      [0] => 4

      )

      $data = [

      [

      'name' => 'xxx',

      'age' => 12

      ],

      [

      'name' => 'yyy',

      'age' => 20

      ],

      [

      'name' => 'zzz',

      'age' => 30

      ]

      ];

      print_r(array_slice($data,1,2));

      print_r(array_slice($data,-1,1));

      //結(jié)果:

      Array

      (

      [0] => Array

      (

      [name] => yyy

      [age] => 20

      )

      [1] => Array

      (

      [name] => zzz

      [age] => 30

      )

      )

      Array

      (

      [0] => Array

      (

      [name] => zzz

      [age] => 30

      )

      )

      array_map

      為數(shù)組的每個元素執(zhí)行回調(diào)函數(shù),返回一個新的數(shù)組

      $arr = [1,3,5];

      $res = array_map(function($val){

      return $val*10; //每個值乘10

      },$arr);

      print_r($res);

      print_r($arr);

      //結(jié)果:

      Array

      (

      [0] => 10

      [1] => 30

      [2] => 50

      )

      Array

      (

      [0] => 1

      [1] => 3

      [2] => 5

      )

      多個數(shù)組的時候:

      $arr1 = [1,2,3,4,5];

      $arr2 = [6,7,8,9,10];

      $res = array_map(function($val1,$val2){

      return $val1 + $val2;

      },$arr1,$arr2);

      print_r($res);

      //結(jié)果:

      Array

      (

      [0] => 7

      [1] => 9

      [2] => 11

      [3] => 13

      [4] => 15

      )

      array_walk

      使用用戶自定義函數(shù)對數(shù)組中的每個元素做回調(diào)處理,成功時返回 TRUE, 或者在失敗時返回 FALSE。

      //將數(shù)組中的元素用于某種操作

      $arr = ['a','b','c'];

      array_walk($arr,function(&$val,$key){

      $val .= $val;

      });

      print_r($arr);

      //結(jié)果:

      Array

      (

      [0] => aa

      [1] => bb

      [2] => cc

      )

      異同點

      array_filter() 重點在于過濾(而不是新增)某個元素,當你處理到一個元素時,返回過濾后的數(shù)組

      array_map() 重點在于遍歷一個數(shù)組或多個數(shù)組的元素,返回一個新的數(shù)組

      array_walk() 重點在于遍歷數(shù)組進行某種操作

      array_filter() 和 array_walk()對一個數(shù)組進行操作,數(shù)組參數(shù)在前,函數(shù)參數(shù)在后 ?array_map() 可以處理多個數(shù)組,因此函數(shù)參數(shù)在前,數(shù)組參數(shù)在后,可以根據(jù)實際情況放入多個數(shù)組參數(shù)

      ceil()

      ceil函數(shù)是向上取整函數(shù),里面參數(shù)是float,返回值也是float

      echo ceil(4.1); // 5

      echo ceil(9.999); // 10

      echo ceil(5); //5

      echo ceil(-1.2); // -1

      echo ceil(-1); // -1

      floor()

      floor函數(shù)是向下取整,里面參數(shù)是float,返回值也是float

      echo floor(4.1); // 4

      echo floor(9.999); // 9

      echo floor(5); //5

      echo floor(-1.2); // -2

      echo floor(-1); // -1

      round()

      float round ( float $val [, int $precision = 0 [, int $mode = PHP_ROUND_HALF_UP ]] )

      返回將 val 根據(jù)指定精度 precision(十進制小數(shù)點后數(shù)字的數(shù)目)進行四舍五入的結(jié)果。precision 也可以是負數(shù)或零(默認值)。返回值是float型

      echo round(3.4); // 3

      echo round(3.5); // 4

      echo round(3.6); // 4

      echo round(3.6, 0); // 4

      echo round(1.95583, 2); // 1.96

      echo round(1241757, -3); // 1242000

      echo round(5.045, 2); // 5.05

      echo round(5.055, 2); // 5.06

      round 的參數(shù)一是數(shù)據(jù)源,參數(shù)二是要保留的小數(shù)位而且之后一位(比如你輸入2那么第3為是之后一位)被四舍五入,當他是負數(shù)的時候,從數(shù)據(jù)源最后一位開始往前數(shù)相應(yīng)的長度制0并將最后一位四舍五入比如round(123456,-2) 就是123456從6開始往前數(shù)兩位都變成零,并且最后一位5(從后往前數(shù)第一位是6最后一位是5)被四舍五入,輸出123500。當?shù)诙€參數(shù)為0時候,結(jié)果相當于對數(shù)字取整并四舍五入。

      還有使用sprintf對數(shù)據(jù)四舍五入:

      $n=0.1265489;

      echo sprintf("%.2f", $n); // 0.13

      $_GET

      http://localhost/api?a=1+2&b=1%3&c=yy3#4&d=6@22

      echo $_GET["a"]; //1 2

      echo $_GET["b"]; //1%3

      echo $_GET["c"]; //yy3

      echo $_GET["d"]; //報錯:Undefined index: d

      $_GET會把'#'字符后面的過濾掉(所以上面報錯不識別d),‘+’會轉(zhuǎn)為空

      PHP兩種數(shù)組合并方式區(qū)別示例

      對于重復(fù)的字符串鍵,+操作后,前面數(shù)組的鍵值會覆蓋后面的

      對于重復(fù)的數(shù)字鍵,+操作后,前面數(shù)組的鍵值會覆蓋后面的,保留之前數(shù)字鍵

      對于重復(fù)的字符串鍵,array_merge后,后面數(shù)組的鍵值會覆蓋前面的

      對于重復(fù)的數(shù)字鍵,array_merge后,重排數(shù)字鍵,不會覆蓋

      參考文章

      PHP ...$arg使用

      在PHP 5.6及更高版本中,參數(shù)列表可能包含...標記,表示該函數(shù)接受可變數(shù)量的參數(shù)。參數(shù)將作為數(shù)組傳遞給給定變量

      //聲明時使用

      function sum(...$numbers) {

      //var_dump($numbers); //$numbers是個數(shù)組值為:[1,2,3,4]

      $acc = 0;

      foreach ($numbers as $n) {

      $acc += $n;

      }

      return $acc;

      }

      //10

      echo sum(1, 2, 3, 4);

      ?>

      //調(diào)用時使用

      function add($a, $b) {

      var_dump($a);//int(1)

      var_dump($b); //int(2)

      return $a + $b;

      }

      //3

      echo add(...[1, 2])."\n";

      //3

      $arr = [1, 2];

      echo add(...$arr);//$arr的值會循環(huán)賦值給add里面的參數(shù)($a為1,$b為2)

      ?>

      參考文章

      獲取每個月的第一天和最后一天

      echo date("Y-m-d H:i:s",strtotime('first day of today')); //2020-04-01 00:00:00

      echo?date("Y-m-d?H:i:s",strtotime('last?day?of?23:59'));??//2020-04-30?23:59:00

      PHP 數(shù)據(jù)結(jié)構(gòu)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:銷售項目管理流程,從策劃到交付的成功之道
      下一篇:零基礎(chǔ)學前端定位
      相關(guān)文章
      久久激情亚洲精品无码?V| 女bbbbxxxx另类亚洲| 久久亚洲精品无码观看不卡| 亚洲av无码不卡私人影院| 日韩成人精品日本亚洲| 在线观看亚洲电影| 亚洲福利在线播放| 亚洲一区精品伊人久久伊人| 亚洲国产成人爱av在线播放| 亚洲国产电影av在线网址| 亚洲精品成人网久久久久久| 亚洲色大成WWW亚洲女子| 久久亚洲精品专区蓝色区| 亚洲激情视频图片| 最新亚洲卡一卡二卡三新区 | 亚洲午夜理论片在线观看| 久久乐国产综合亚洲精品| 亚洲人成色99999在线观看| 亚洲国产一区二区三区在线观看| 亚洲人片在线观看天堂无码| 亚洲av无码成人精品国产| 国产亚洲欧美在线观看| 亚洲成av人片天堂网老年人| 亚洲精品国产自在久久 | 久久综合亚洲色一区二区三区| 亚洲精品国产免费| 精品亚洲国产成人| 亚洲熟妇无码AV| 国产亚洲成在线播放va| 久久久久国产成人精品亚洲午夜| 久久久久久亚洲精品不卡| 亚洲国产成人高清在线观看| 亚洲天堂在线播放| 国产成人精品亚洲2020| 亚洲人成电影网站色www| 亚洲AV日韩精品一区二区三区| 日本亚洲国产一区二区三区| 亚洲av永久无码精品漫画| 久久精品亚洲中文字幕无码麻豆| 亚洲a级在线观看| 亚洲日本天堂在线|