首頁 >後端開發 >php教程 >PHP中容易犯錯的點

PHP中容易犯錯的點

小云云
小云云原創
2018-03-29 15:34:521251瀏覽

本文主要跟大家分享PHP中容易犯錯的點,都是平常使用php的時候總結出來的,希望能幫助大家。

1  所引用的問題

<?php$arr = range(1,3);foreach ($arr as &$v){
}


print_r($arr);foreach ($arr as $v){
    print_r($arr);

}

PHP中容易犯錯的點

#2 偵測變數是否設定

<?php$data = array();//$data[&#39;name&#39;]  = 0;//$data[&#39;name&#39;]  = null;$data[&#39;name&#39;] = false;if (isset($data[&#39;name&#39;])) {
    var_dump(&#39;not set name&#39;);
} else {
    var_dump(&#39;already set name&#39;);

}if (($data[&#39;name&#39;])) {
    var_dump(&#39;data-name 存在&#39;);
} else {
    var_dump(&#39;data-name 不存在&#39;);

}if (array_key_exists(&#39;name&#39;, $data)) {
    var_dump(&#39;key name 存在于array中&#39;);
} else {
    var_dump(&#39;key name 不存在于array中&#39;);

}

三種值,三種判斷變數是否存在的方法結果分別為:
PHP中容易犯錯的點
PHP中容易犯錯的點

PHP中容易犯錯的點

#3 直接使用函數傳回的資料索引

<?phpclass Config{
    private $values = [];    public function __construct() {
        // 使用数组对象而不是数组
        // $this->values = new ArrayObject();
    }    public function &getValues() {
        return $this->values;
    }
}$config = new Config();$config->getValues()[&#39;test&#39;] = &#39;test&#39;;echo $config->getValues()[&#39;test&#39;];

如果你不使用object 來儲存values ,或不使用引用將函數的結果變成values數組的引用,那麼可能會錯

Notice: Undefined index: test in /Users/leon/Documents/workspace/test/php7.php on line 20

這樣會破壞物件的封裝性,最好這樣寫

class Config{
    private $values = [];    public function setValue($key, $value) {
        $this->values[$key] = $value;
    }    public function getValue($key) {
        return $this->values[$key];
    }
}$config = new Config();$config->setValue(&#39;testKey&#39;, &#39;testValue&#39;);echo $config->getValue(&#39;testKey&#39;);    // 输出『testValue』

以上是PHP中容易犯錯的點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn