1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| $visible = [ 'a', 'b', 'c' => [ 'a' => [ 'b', ], 'd', ], 'd', ]; $arr = [ 'a' => 0, 'b' => 1, 'c' => [ 'a' => [ 'a' => 2, 'b' => 3, ], 'b' => 4, 'd' => 5, ], 'd' => 6, ];
trait FilterTrait { public function filterOutputData($visible, $data) { $res = [];
foreach ($visible as $key => $value) { // 输出字段 if (is_string($value)) { if (array_key_exists($value, $data)) { $res[$value] = $data[$value]; } }
// 输出字段在数组里 if (is_array($value)) { if (array_key_exists($key, $data)) { $res[$key] = is_null($data[$key]) ? null : $this->filterOutputData($value, $data[$key]); } } }
return $res; }
/** * 过滤输出的列表 * * [ * // 普通的key * 'key1', * // 当前key对应一个数组时候 * 'key2' => [ * 'key1' => [ * 'val', * ], * 'key2', * ], * ]; */ public function filterOutputList($visible, $list) { $res = [];
foreach ($list as $key => $value) { $res[$key] = $this->filterOutputData($visible, $value); }
return $res; } }
|