Aktueller Standort: Startseite> Neueste Artikel> Was ist der Unterschied zwischen definierten () und isset () -Funktionen? Wann sollte ich defined () verwenden?

Was ist der Unterschied zwischen definierten () und isset () -Funktionen? Wann sollte ich defined () verwenden?

gitbox 2025-06-15

<span><span><span class="hljs-meta"><?php</span></span><span> </span><span><span class="hljs-comment">// 前面与文章内容无关的部分</span></span><span> </span><span><span class="hljs-meta">?></span></span><span> <hr> </span><span><span class="hljs-comment">### [defined() 和 isset() 函数有什么区别?什么时候该用 defined()?]</span></span><span> 在 PHP 编程中,`</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>()` 和 `</span><span><span class="hljs-keyword">isset</span></span><span>()` 都是用于检查某个值的状态的函数,但它们各自的用途和工作原理有很大的不同。理解这两个函数的区别,能帮助我们在编写 PHP 代码时选择适当的函数来处理变量和常量的检查。下面我们来详细讨论这两个函数的区别以及它们各自的适用场景。 </span><span><span class="hljs-comment">#### 1. `defined()` 函数</span></span><span> `</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>()` 是一个用来检查常量是否已经定义的函数。常量是在程序中定义一次后不可更改的值,而 `</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>()` 用于判断某个常量是否已经被定义。 **语法:** ```php </span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span>): </span><span><span class="hljs-keyword">bool</span></span><span> </span></span>

  • $ name ist der konstante Name (eine Zeichenfolge), die überprüft werden soll.

  • Rückgabewert: Return True Wenn die Konstante definiert wurde; ansonsten false zurückgeben.

Beispiel:

 <span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'MY_CONSTANT'</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'MY_CONSTANT'</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Konstante MY_CONSTANT Wurden definiert。'</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Konstante MY_CONSTANT Undefiniert。'</span></span><span>;
}
</span></span>

Ausgabe:

 <span><span>Konstante MY_CONSTANT Wurden definiert。
</span></span>

2. ISSET () -Funktion

Mit der Funktion isset () wird überprüft, ob eine Variable festgelegt ist und ihr Wert nicht null ist. Diese Funktion wird normalerweise verwendet, um zu überprüfen, ob eine Variable existiert und ein Wert zugewiesen wurde.

Grammatik:

 <span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$var</span></span><span>, </span><span><span class="hljs-keyword">mixed</span></span><span> ...</span><span><span class="hljs-variable">$vars</span></span><span>): </span><span><span class="hljs-keyword">bool</span></span><span>
</span></span>
  • Parameter: $ var ist die zu überprüfende Variable, es kann eine einzelne Variable oder mehrere Variablen sein.

  • Rückgabewert: Return True Wenn alle angegebenen Variablen festgelegt sind und ihr Wert nicht null ist, ansonsten falsch .

Beispiel:

 <span><span><span class="hljs-variable">$var</span></span><span> = </span><span><span class="hljs-string">'Hello'</span></span><span>;

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$var</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Variable $var Festgelegt und der Wert ist nicht null。'</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Variable $var Nicht gesetzt oder als null。'</span></span><span>;
}
</span></span>

Ausgabe:

 <span><span>Variable $</span><span><span class="hljs-keyword">var</span></span><span> Festgelegt und der Wert ist nicht </span><span><span class="hljs-literal">null</span></span><span>。
</span></span>

3. Die Differenz zwischen definierten () und isset ()

  • Handlungsobjekt: Defined () wird nur verwendet, um zu prüfen, ob eine Konstante definiert ist, während Isset () überprüft, ob eine Variable festgelegt ist und nicht null .

  • Anwendbare Szenarien: Defined () wird hauptsächlich für Konstanten verwendet, während ISSET () für Variablen verwendet wird (wie globale Variablen, Array -Elemente, Objekteigenschaften usw.).

  • Werttyp: Das von ISSET () überprüfte Objekt ist der Wert einer Variablen, und der Nullwert wird normalerweise ignoriert. während definiert () prüft, ob die Konstante existiert.

4. Wann zu verwenden defined () ?

Defined () wird hauptsächlich verwendet, um zu überprüfen, ob eine Konstante definiert wurde. Dies ist besonders nützlich in den folgenden Situationen:

  • Vermeiden Sie es wiederholt definierende Konstanten: Wenn Sie nicht sicher sind, ob eine Konstante definiert wurde, können Sie definiert () verwenden, um den Fehler zu vermeiden, Konstanten wiederholt zu definieren.

     <span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'MY_CONSTANT'</span></span><span>)) {
        </span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'MY_CONSTANT'</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);
    }
    </span></span>
  • Verwendung in Frameworks: Viele PHP -Frameworks oder Bibliotheken verwenden Konstanten, um Konfigurationsoptionen zu definieren. Sie können auf Situationen stoßen, in denen Sie überprüfen müssen, ob bestimmte Konstanten definiert wurden, und vermeiden, vorhandene Konfigurationswerte zu überschreiben.

  • Bedingte Definitionskonstanten: Manchmal definieren wir verschiedene Konstanten nach verschiedenen Betriebsumgebungen. Verwenden Sie definiert () , um Konstanten bedingt in verschiedenen Umgebungen zu definieren.

     <span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'ENVIRONMENT'</span></span><span>)) {
        </span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'ENVIRONMENT'</span></span><span>, </span><span><span class="hljs-string">'production'</span></span><span>);
    }
    </span></span>

5. Wann kann ISSet () verwendet werden?

ISSET () wird verwendet, um zu überprüfen, ob die Variable festgelegt ist und nicht null . Dies ist nützlich, wenn es darum geht, sich mit Formularen, Array -Elementen und globalen Variablen zu befassen. Hier sind einige gemeinsame Nutzungsszenarien:

  • Formulareingabe überprüfen: Wenn die Verarbeitung von Benutzereingaben verwendet wird, stellt ISSET () sicher, dass das Formularfeld festgelegt und nicht leer ist.

     <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>])) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Benutzername:'</span></span><span> . </span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>];
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Benutzername未提交。'</span></span><span>;
    }
    </span></span>
  • Überprüfen Sie die Array -Elemente: Verwenden Sie ISSET (), um zu überprüfen, ob ein Schlüssel im Array existiert und sein Wert nicht null ist.

     <span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'John'</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span> =&gt; </span><span><span class="hljs-literal">null</span></span><span>];
    
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>])) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Name:'</span></span><span> . </span><span><span class="hljs-variable">$arr</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>];
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Name未设置。'</span></span><span>;
    }
    </span></span>
  • Überprüfen Sie die Objekteigenschaften: ISSET () kann verwendet werden, um zu überprüfen, ob die Eigenschaften des Objekts festgelegt wurden.

     <span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">User</span></span><span> {
        </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span>;
    }
    
    </span><span><span class="hljs-variable">$user</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">User</span></span><span>();
    
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$user</span></span><span>-&gt;name)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Benutzername:'</span></span><span> . </span><span><span class="hljs-variable">$user</span></span><span>-&gt;name;
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Benutzername未设置。'</span></span><span>;
    }
    </span></span>

Zusammenfassen

  • Defined () wird verwendet, um zu überprüfen, ob eine Konstante definiert ist und für eine konstante Logik geeignet ist.

  • ISSET () wird verwendet, um zu überprüfen, ob die Variable festgelegt und nicht null ist, und ist für die Überprüfung der Variablen geeignet.

In der tatsächlichen Entwicklung kann die Auswahl der entsprechenden Funktion entsprechend den Anforderungen die Robustheit und Wartbarkeit des Codes verbessern. Wenn Sie definiert () verwenden sollten, wenn Sie überprüfen, ob eine Konstante definiert ist; Und wenn Sie Variablen überprüfen, sollten Sie ISSET () verwenden.

 <span><span><span class="hljs-comment">// Der folgende Teil, der nichts mit dem Inhalt des Artikels zu tun hat</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>