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. Klimaanlagen type
值为空,因此它不应返回详细的 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.
您的
array_filter
仅在第一级起作用。您还希望在details
数组上进行循环,您可以使用简单的 foreach 循环来完成此操作。外部循环将遍历所有行,内部循环将遍历每行的详细信息
。现场演示