Heim  >  Artikel  >  Backend-Entwicklung  >  Filtermethode für mehrdimensionales PHP-Array

Filtermethode für mehrdimensionales PHP-Array

PHPz
PHPzOriginal
2023-04-18 09:47:26863Durchsuche

Die Verarbeitung von Daten in PHP ist eine sehr häufige Anforderung, und mehrdimensionale Arrays gehören zu den häufigsten Datenstrukturen. Bei der Verwendung mehrdimensionaler Arrays können wir jedoch nicht umhin, einige Datenfilterungsvorgänge durchzuführen, um die Genauigkeit und Rechtmäßigkeit der Daten sicherzustellen. In diesem Artikel wird die Filtermethode für mehrdimensionale Arrays in PHP vorgestellt.

1. Filtermethode array_map

array_map() ist eine von PHP bereitgestellte Funktion, die jedes Element in einem oder mehreren Arrays an die angegebene benutzerdefinierte Rückruffunktion übergeben kann Array, dessen Elemente die von der Rückruffunktion verarbeiteten Elemente sind.

Wir können die Funktion array_map() verwenden, um eine mehrdimensionale Array-Filterung zu implementieren. Die spezifische Methode besteht darin, zuerst das mehrdimensionale Array zu durchlaufen, die zu filternden Elemente zur Verarbeitung an die Filterfunktion zu übergeben und dann die verarbeiteten Ergebnisse in einem neuen Array zu speichern. Das Folgende ist ein einfaches Beispiel:

// 多维数组
$data = array(
    array(
        'name' => '张三',
        'age' => 18,
        'sex' => 'male',
        'hobby' => array('swimming', 'reading', 'music'),
    ),
    array(
        'name' => '李四',
        'age' => 22,
        'sex' => 'female',
        'hobby' => array('swimming', 'dancing', 'shopping'),
    ),
);

// 过滤函数
function filter($item) {
    if (!is_array($item)) { 
        return trim($item); // 非数组的元素进行trim()处理
    } else { 
        return array_map('filter', $item); // 数组的元素递归调用filter()函数进行处理
    }
}

$new_data = array_map('filter', $data); // 过滤后的多维数组

Im obigen Beispiel definieren wir eine Filterfunktion filter(), die bestimmt, ob das Element ein Array ist, und die von PHP bereitgestellte trim() für Nicht-Arrays aufruft Die Funktion führt die Verarbeitung durch, ruft sich selbst rekursiv auf, um die Array-Elemente zu verarbeiten, und speichert schließlich die verarbeiteten Ergebnisse im neuen Array $new_data über die Funktion array_map().

2. Filtermethode array_walk_recursive

array_walk_recursive() ist eine von PHP bereitgestellte Funktion, die eine benutzerdefinierte Funktion auf jedes Element in einem mehrdimensionalen Array anwenden kann empfängt zwei Parameter: Der erste Parameter ist der Wert des aktuellen Elements und der zweite Parameter ist der Schlüsselname des aktuellen Elements. Um Array-Daten zu filtern, können wir diese Funktion verwenden, um die Elemente im Array einzeln rekursiv zu durchlaufen und dann die zu filternden Elemente zu verarbeiten. Das Folgende ist der Beispielcode:

// 多维数组
$data = array(
    array(
        'name' => '张三',
        'age' => 18,
        'sex' => 'male',
        'hobby' => array('swimming', 'reading', 'music'),
    ),
    array(
        'name' => '李四',
        'age' => 22,
        'sex' => 'female',
        'hobby' => array('swimming', 'dancing', 'shopping'),
    ),
);

// 过滤函数
function filter(&$value, $key) {
    if (is_string($value)) {
        $value = trim($value); // 对字符串类型进行trim()处理
    }
}

array_walk_recursive($data, 'filter'); // 过滤后的多维数组

Im obigen Beispiel definieren wir eine Rückruffunktion filter(), die zwei Parameter akzeptiert. Der erste Parameter $value ist der Wert des aktuellen Elements und der zweiter Parameter Der erste Parameter $key ist der Schlüsselname des aktuellen Elements. Verwenden Sie die Funktion is_string(), um festzustellen, ob das aktuelle Element vom Typ String ist. Rufen Sie in diesem Fall die von PHP bereitgestellte Funktion trim() zur Verarbeitung auf.

Nachdem die Filterfunktion definiert ist, implementieren wir die Durchlaufoperation für das mehrdimensionale Array, indem wir die Funktion array_walk_recursive() aufrufen, jedes Element zur Verarbeitung an die Rückruffunktion übergeben und schließlich das gefilterte Ergebnis erhalten .

3. Die Filtermethode array_filter

array_filter() ist eine von PHP bereitgestellte Funktion, die ein bestimmtes Array gemäß der angegebenen Rückruffunktion filtern kann. Es durchläuft jedes Element im Array und wendet die Rückruffunktion auf jedes Element an. Der Rückgabewert ist ein Array von Elementen, die in der Rückruffunktion als TRUE ausgewertet werden.

Wir können die Funktion array_filter() verwenden, um mehrdimensionale Arrays zu filtern. Die spezifische Methode besteht darin, die Elemente im mehrdimensionalen Array zu durchlaufen und die Elemente, die die Filterbedingungen erfüllen, in einem neuen Array zu speichern. Das Folgende ist ein einfaches Beispiel:

// 多维数组
$data = array(
    array(
        'name' => '张三',
        'age' => 18,
        'sex' => 'male',
        'hobby' => array('swimming', 'reading', 'music'),
    ),
    array(
        'name' => '李四',
        'age' => 22,
        'sex' => 'female',
        'hobby' => array('swimming', 'dancing', 'shopping'),
    ),
);

// 过滤函数
function filter($item) {
    return (strlen($item['name']) > 2); // 过滤满足条件的元素
}

$new_data = array_filter($data, 'filter'); // 过滤后的多维数组

Im obigen Beispiel definieren wir eine Rückruffunktion filter(), die zum Verarbeiten von Elementen verwendet wird, die gefiltert werden müssen. In der Funktion filter() geben wir TRUE für Elemente zurück, die eine bestimmte Bedingung erfüllen (hier ist die Länge von „Name“ größer als 2), andernfalls geben wir FALSE zurück. Nachdem die Filterfunktion definiert ist, rufen wir die Funktion array_filter() auf und übergeben das zu filternde Array und die Filterfunktion, um die gefilterten Ergebnisse zu erhalten.

Zusammenfassend lässt sich sagen, dass wir eine Vielzahl von Methoden verwenden können, um mehrdimensionale Arrays zu filtern, einschließlich Funktionen wie array_map(), array_walk_recursive() und array_filter(). Welche Methode zu wählen ist, hängt vom konkreten Anwendungsszenario und den Anforderungen ab.

Das obige ist der detaillierte Inhalt vonFiltermethode für mehrdimensionales PHP-Array. 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