Andaikan saya mempunyai tatasusunan seperti ini:
$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",
],
],
];
Saya ingin menapis tatasusunan ini supaya ia hanya mengandungi butiran di mana nilainya tidak kosong. type 值为空,因此它不应返回详细的 type oleh Airco. Dalam kes ini, tatasusunan yang dikembalikan sepatutnya kelihatan seperti ini:
$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",
],
],
];
Saya tahu saya boleh menapis tatasusunan berdasarkan lajur kosong menggunakan kod berikut (seperti yang terdapat di sini):
$result = array_filter($array, function($o) use($column) {
return trim( $o[$column] ) !== '' && $o[$column] !== null;
});
Tetapi memandangkan saya mempunyai tatasusunan bersarangdetails, saya tidak pasti cara menyesuaikan kod ini untuk menjadikannya berfungsi untuk kes saya.
Milik anda
array_filter仅在第一级起作用。您还希望在details数组上进行循环,您可以使用简单的 foreach 循环来完成此操作。外部循环将遍历所有行,内部循环将遍历每行的详细信息.<?php foreach($array as &$row){ foreach($row['details'] as $key => $record){ if(strlen($record['value']) == 0){ unset($row['details'][$key]); } } }Demonstrasi secara langsung