"Radiator",details"=>0=>["label"=>"Condition",value"= > "Neu",],1=>[""> Wie filtere ich ein mehrdimensionales Array basierend auf Spalten in einem verschachtelten Array?-Fragen und Antworten zum chinesischen PHP-Netzwerk
Wie filtere ich ein mehrdimensionales Array basierend auf Spalten in einem verschachtelten Array?
P粉004287665
P粉004287665 2023-09-08 13:16:28
0
1
418

Angenommen, ich habe ein Array wie dieses:

$array = [ 0 => [ "label" => "Radiator", "details" => 0 => [ "label" => "Condition", "value" => "New", ], 1 => [ "label" => "Type", "value" => "Wall", ], ], 1 => [ "label" => "Airco", "details" => 0 => [ "label" => "Condition", "value" => "New", ], 1 => [ "label" => "Type", "value" => "", ], ], 2 => [ "label" => "Refrigerator", "details" => 0 => [ "label" => "Condition", "value" => "Bad", ], 1 => [ "label" => "Type", "value" => "Wall", ], ], ];

Ich möchte dieses Array filtern, sodass es nur Details enthält, bei denen der Wert nicht leer ist. Klimaanlagentype值为空,因此它不应返回详细的type. In diesem Fall sollte das zurückgegebene Array wie folgt aussehen:

$array = [ 0 => [ "label" => "Radiator", "details" => 0 => [ "label" => "Condition", "value" => "New", ], 1 => [ "label" => "Type", "value" => "Wall", ], ], 1 => [ "label" => "Airco", "details" => 0 => [ "label" => "Condition", "value" => "New", ], ], 2 => [ "label" => "Refrigerator", "details" => 0 => [ "label" => "Condition", "value" => "Bad", ], 1 => [ "label" => "Type", "value" => "Wall", ], ], ];

Ich weiß, dass ich ein Array basierend auf leeren Spalten filtern kann, indem ich den folgenden Code verwende (wie hier zu finden):

$result = array_filter($array, function($o) use($column) { return trim( $o[$column] ) !== '' && $o[$column] !== null; });

Aber da ich ein verschachteltes Array habedetails, bin ich mir nicht ganz sicher, wie ich diesen Code anpassen soll, damit er für meinen Fall geeignet ist.

P粉004287665
P粉004287665

Antworte allen (1)
P粉458725040

您的array_filter仅在第一级起作用。您还希望在details数组上进行循环,您可以使用简单的 foreach 循环来完成此操作。外部循环将遍历所有行,内部循环将遍历每行的详细信息

 $record){ if(strlen($record['value']) == 0){ unset($row['details'][$key]); } } }

现场演示

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!