Heim  >  Artikel  >  PHP-Framework  >  Umfassende Analyse des ThinkPHP-Array-Ersatzes

Umfassende Analyse des ThinkPHP-Array-Ersatzes

PHPz
PHPzOriginal
2023-04-21 11:22:31711Durchsuche

Das Manipulieren von Arrays ist eine häufige Aufgabe beim Schreiben von PHP-Programmen. In ThinkPHP-Projekten ist es häufig erforderlich, bestimmte Werte im Array zu ersetzen, z. B. alle leeren Zeichenfolgen ('') im Array durch Null zu ersetzen. In diesem Artikel werden Ihnen verschiedene Array-Ersetzungsmethoden in ThinkPHP vorgestellt.

1. Gewöhnlicher Array-Ersatz

Werfen wir zunächst einen Blick auf die Ersetzungsmethode gewöhnlicher Arrays. Angenommen, wir haben ein Array $arr, das vier Elemente enthält:

$arr ​​​​= array(

'name' => '张三',
'age' => 18,
'email' => 'zhangsan@example.com',
'gender' => '男',

);

Wenn wir wollen Um alle leeren Zeichenfolgen im Array durch Null zu ersetzen, können Sie eine foreach-Schleife verwenden, um das Array zu durchlaufen und jedes Element zu ersetzen. Der Code lautet wie folgt:

foreach ($arr as &$value) {

if ($value === '') {
    $value = null;
}

}

wobei &$value eine Referenz darstellt zum Array-Element hinzufügen, sodass das ursprüngliche Array direkt geändert werden kann. Nach dem Ausführen des obigen Codes wird der Wert von $arr zu:

array(

'name' => '张三',
'age' => 18,
'email' => 'zhangsan@example.com',
'gender' => '男',

);

Wenn Sie das angegebene ersetzen möchten Schlüsselname Wert, Sie können der Schleife eine bedingte Beurteilung hinzufügen. Der Code lautet wie folgt:

foreach ($arr as $key => &$value) {

if ($key === 'email' && $value === 'zhangsan@example.com') {
    $value = 'lisi@example.com';
}
#🎜🎜 #}

Im obigen Code haben wir den Wert des E-Mail-Schlüsselnamens ersetzt, d. h. „zhangsan@example.com“ durch „lisi@example.com“. Code, der Wert von $arr wird zu:

array(

'name' => '张三',
'age' => 18,
'email' => 'lisi@example.com',
'gender' => '男',
);

Diese Methode hat jedoch einen Nachteil groß ist, ist die Effizienz der Verwendung einer Schleife zum Durchlaufen und Ersetzen sehr gering. Wir müssen also eine effizientere Ersatzmethode finden.

2. Rekursiver Array-Ersatz

Wenn wir alle leeren Strings in einem mehrdimensionalen Array durch Null ersetzen müssen, reicht die Verwendung einer Schleife nicht mehr aus. Zu diesem Zeitpunkt können wir die rekursive Methode verwenden, um das gesamte Array zu durchlaufen und jedes Unterarray zu rekursieren, bis das grundlegendste Element zum Ersetzen gefunden wird.

Der Code lautet wie folgt:

function array_replace_recursive_null($arr) {

foreach ($arr as $key => &$value) {
    if (is_array($value)) {
        $value = array_replace_recursive_null($value);
    } elseif ($value === '') {
        $value = null;
    }
}
return $arr;
}

Oben Code: Bestimmen Sie zunächst, ob das aktuelle Element ein Array ist. Wenn ja, rufen Sie die Funktion array_replace_recursive_null() auf. Wenn nicht, ermitteln Sie, ob das aktuelle Element eine leere Zeichenfolge ist.

Verwenden Sie diese Funktion, um das Array zu ersetzen. Der Code lautet wie folgt:

$arr ​​​​= array(

'name' => '张三',
'age' => 18,
'contact' => array(
    'email' => 'zhangsan@example.com',
    'phone' => '',
    'address' => array(
        'province' => '广东省',
        'city' => '',
        'district' => '番禺区',
    ),
),
);#🎜 🎜#$arr ​​​​= array_replace_recursive_null($arr);


Wenn Sie den obigen Code ausführen, wird der Wert von $arr zu:

array(

'name' => '张三',
'age' => 18,
'contact' => array(
    'email' => 'zhangsan@example.com',
    'phone' => null,
    'address' => array(
        'province' => '广东省',
        'city' => null,
        'district' => '番禺区',
    ),
),

);#🎜 🎜#

Rekursive Array-Ersetzung eignet sich zum Ersetzen des gesamten mehrdimensionalen Arrays, das Ersetzen eines einzelnen Werts erfordert jedoch immer noch die Verwendung von Schleifendurchlauf.

3. Verwenden Sie die Funktion array_map(), um

Die Funktion array_map() in PHP kann die angegebene Rückruffunktion auf jedes Element im Array anwenden und ein neues Array zurückgeben. Mit dieser Funktion können wir Werte in einem Array ersetzen.

Angenommen, wir haben ein Array mit den folgenden Daten:

$arr ​​​​= array('apple', 'orange', 'banana', '');# 🎜🎜 #

Wir möchten den leeren String durch null ersetzen. Dazu können wir die Funktion array_map() und eine Callback-Funktion verwenden.

Der Code lautet wie folgt:

function replace_null($value) {

return $value === '' ? null : $value;

}

$arr ​​​​= array_map( 'replace_null', $ arr);

Im Code haben wir eine Rückruffunktion replace_null() geschrieben, die null zurückgibt, wenn $value eine leere Zeichenfolge ist, andernfalls wird $value zurückgegeben. Diese Funktion wird dann als Rückruffunktion an die Funktion array_map() übergeben, um die Ersetzung der Werte im Array abzuschließen.


4. Verwenden Sie die Funktion array_walk_recursive(), um die Funktion

array_walk_recursive() zu ersetzen, um benutzerdefinierte Funktionen rekursiv auf jedes Element eines Arrays oder Objekts anzuwenden. Ähnlich wie array_map(), kann aber mehrdimensionale Arrays rekursiv durchlaufen. Mit dieser Funktion können wir alle Werte in einem mehrdimensionalen Array ersetzen.

Angenommen, wir haben ein mehrdimensionales Array $arr, das einige leere Zeichenfolgen enthält:

$arr ​​​​= array(

'name' => '张三',
'age' => 18,
'contact' => array(
    'email' => 'zhangsan@example.com',
    'phone' => '',
    'address' => array(
        'province' => '广东省',
        'city' => '',
        'district' => '番禺区',
    ),
),

);# 🎜🎜#

Jetzt müssen wir alle leeren Zeichenfolgen durch Null ersetzen. Dies kann mit der Funktion array_walk_recursive() und einer Callback-Funktion erreicht werden.

Der Code lautet wie folgt:

function replace_null_recursive(&$value, $key) {

if ($value === '') {
    $value = null;
}
}

array_walk_recursive($ arr, ' replace_null_recursive');

Im Code haben wir eine Rückruffunktion replace_null_recursive() geschrieben. Wenn $value eine leere Zeichenfolge ist, ersetzen Sie sie durch null und übergeben Sie die Funktion dann als Rückruffunktion Geben Sie die Funktion array_walk_recursive() an.

Nachdem der obige Code ausgeführt wurde, sieht der Wert von $arr folgendermaßen aus:

array(

'name' => '张三',
'age' => 18,
'contact' => array(
    'email' => 'zhangsan@example.com',
    'phone' => null,
    'address' => array(
        'province' => '广东省',
        'city' => null,
        'district' => '番禺区',
    ),
),
);

# 🎜🎜 #5. Zusammenfassung

In diesem Artikel werden verschiedene Methoden zum Ersetzen von Arrays in ThinkPHP-Projekten vorgestellt, einschließlich der gewöhnlichen Array-Ersetzung, der rekursiven Array-Ersetzung, der Verwendung der Array_map()-Funktionsersetzung und der Verwendung der array_walk_recursive()-Funktionsersetzung. Für jede Methode gibt es anwendbare Szenarien, und die Auswahl der am besten geeigneten Methode basierend auf der tatsächlichen Situation kann Zeit und Energie sparen.

Abschließend hoffe ich, dass dieser Artikel den Lesern hilfreich sein und die Aufgabe beim Array-Austausch effizienter erledigen kann.

Das obige ist der detaillierte Inhalt vonUmfassende Analyse des ThinkPHP-Array-Ersatzes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn