中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php容易弄不明白的知識點有哪些

發布時間:2021-10-11 10:43:03 來源:億速云 閱讀:135 作者:柒染 欄目:編程語言

php容易弄不明白的知識點有哪些,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

一、類中self和static的區別以及什么是后期靜態綁定(late static buildings)

    self是用來調用本代碼所在類中的內容,而static是用來調用實例中的類的內容。

    測試代碼如下:

<?php
class A {
    public static function who() {
        echo __CLASS__;
        echo '<br>';
    }
    public static function test() {
        static::who(); // 后期靜態綁定從這里開始
        self::who();
    }
}

class B extends A {
    public static function who() {
        echo __CLASS__."\n";
    }
}

B::test();

二、ini_set用于設置當前程序中的php配置,替換php.ini中內容,僅用于當前程序。

三、const 和 define 的根本區別在于,const 在編譯時定義常量,而 define 在運行時定義常量

const FOO = 'BAR';
define('FOO', 'BAR');

// but
if (...) {
    const FOO = 'BAR';    // 無效
}
if (...) {
    define('FOO', 'BAR'); // 有效
}

四、isset($a['test'])最好用array_key_exists('test',$a),因為當$a['test']=null時,isset($a['test'])會返回false

五、try{} catch(Exception $e){} finally{},無論有無出錯finally中的內容都會執行,即使有return,最終也是執行finally中的return。

六、判斷 PHP 數組是否是關聯數組的方法

function has_string_keys(array $array) {
  return count(array_filter(array_keys($array), 'is_string')) > 0;
}

七、===運算符返回值,當兩邊是對象的時候,即使一個對象是另一個對象的clone,也不相等,必須兩個對象指向的地址相同才相等,但如果是一般變量,只要變量類型和值相等即可。

$a = new stdClass();
$a->foo = "bar";
$b = clone $a;
var_dump($a === $b);//false
$c = 10;
$d = 10;
var_dump($c === $d);//true

八、==號要慎重使用,如果一邊是字符串一邊是數字時就容易產生問題

$a = 0;
echo ('pa' == $a) ? 'true' : 'false';//true
$b = 1;
echo ('1cedd' == $b) ? 'true' : 'false';//true

九、array_map、array_walk、array_filter,三個對數組內容過濾或者重新計算非常好的函數。

/*array_map示例,返回用自定義函數處理完的數組*/
$func = function($value) {
    return $value * 2;
};

print_r(array_map($func, range(1, 5)));

$func2 = function($a,$b) {
    return $a * $b;
};
//如果有多個數組傳入,則每個數組中取同樣key的值作為參數
print_r(array_map($func2, range(1, 5),range(10, 50)));

/*array_walk示例,對傳入數組中的每一個值使用自定義函數處理,函數的前兩個參數是value,key
*還有一個array_walk_recursive遞歸對數組中的每個變量使用自定義函數*/
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");

function test_alter(&$item1, $key, $prefix)
{
    $item1 = "$prefix: $item1";//此處改變了原數組中的值
}

function test_print($item2, $key)
{
    echo "$key. $item2<br />\n";
}

echo "Before ...:\n";
array_walk($fruits, 'test_print');

array_walk($fruits, 'test_alter', 'fruit');
echo "... and after:\n";

array_walk($fruits, 'test_print');
/*array_filter,返回符合自定義數組條件的變量數組,如果不傳入函數變量,則返回數組中值不為0,'0',false,null值的變量*/
function odd($var)
{
    // 返回輸入整數是否為奇數(單數)
    return $var & 1;
}
function even($var)
{
    // 返回輸入整數是否為偶數
    return !($var & 1);
}
$array1 = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
$array2 = [6, 7, 8, 9, 10, 11, 12];
echo "Odd :\n";
print_r(array_filter($array1, "odd"));
echo "Even:\n";
print_r(array_filter($array2, "even"));
//不應該在回調函數中改變數組(如:添加、刪除或銷毀“unset”當前數組和里面的元素),否則此函數的行為將不可預測。

十、php是沒有函數重載功能的,php的函數是基于其名稱而不包括參數,但是可以使用func_num_args()  func_get_arg() func_num_args()這三個函數來實現類似函數重載的功能。

function foo()
{
    $numargs = func_num_args();
    echo "Number of arguments: $numargs<br />\n";
    if ($numargs >= 2) {
        echo "Second argument is: " . func_get_arg(1) . "<br />\n";
    }
    $arg_list = func_get_args();
    for ($i = 0; $i < $numargs; $i++) {
        echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
    }
}

foo(1, 2, 3);

看完上述內容,你們掌握php容易弄不明白的知識點有哪些的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

襄城县| 林口县| 宁蒗| 南通市| 封丘县| 石楼县| 岢岚县| 清远市| 廊坊市| 黔江区| 宜阳县| 稷山县| 来凤县| 廉江市| 那曲县| 西藏| 大连市| 晋江市| 偃师市| 保山市| 马边| 榆树市| 安溪县| 苍南县| 杭锦后旗| 樟树市| 锦州市| 麻阳| 大渡口区| 鞍山市| 体育| 铜梁县| 西华县| 衡水市| 新源县| 随州市| 沽源县| 平南县| 沈阳市| 鄢陵县| 定边县|