掘金 : juejin.im/post/6875651237573263368...
Php 在處理物件 / 陣列之後會遇到對資料的返回, 這裡就幾種返回方式進行下說明
資料的處理以及返回
1. 引用返回
$collection = collect([
'h' =>'John Doe',
'n' => 'Jane Doe'
]);
$aim = [];
$aimWithKey = [];
// each 函式不能返回資料, 僅僅作為迴圈來使用
$collection->each(function ($value, $key) use (&$aim, &$aimWithKey) {
// 不存在 Key
$aim[] = $value.'-n';
// 存在 Key
$aimWithKey[$key] = $value.'-n';
});
dump($aim);
/*
array:2 [
0 => "John Doe-n"
1 => "Jane Doe-n"
]
*/
dump($aimWithKey);
/*
array:2 [
"h" => "John Doe-n"
"n" => "Jane Doe-n"
]
*/
2. 函式返回
$aim = collect();
$aimWithKey = collect();
$collection->each(function ($value, $key) use ($aim, $aimWithKey) {
// 存在 KEY
$aimWithKey->put($key, $value.'-f');
// 不保留 Key
$aim->push($value.'-p');
});
dump($aim);
/*
Illuminate\Support\Collection {#759
#items: array:2 [
0 => "John Doe-p"
1 => "Jane Doe-p"
]
}
*/
dump($aimWithKey);
/*
Illuminate\Support\Collection {#764
#items: array:2 [
"h" => "John Doe-m"
"n" => "Jane Doe-m"
]
}
*/
3. map 返回
$aim = $collection->map(function ($value) {
return $value.'-m';
});
// 保留 KEY
dump($aim);
/*
Illuminate\Support\Collection {#764
#items: array:2 [
"h" => "John Doe-m"
"n" => "Jane Doe-m"
]
}
*/
Json 在處理返回的時候
1. 陣列在失去元素之後返回物件
$a = [1, 2, 3];
dump(json_encode($a));
// "[1,2,3]"
"{"a":1,"b":2}"
"{"b":2}"
"{}"
// 這裡會造成資料的不連續, 導致返回為物件, 前端期望為 陣列
unset($a[1]);
dump(json_encode($a));
// "{"0":1,"2":3}"
// 這裡需要獲取需要的值, 或者使用迴圈來做
dump(json_encode(collect($a)->values()));
// "[1,3]"
2. 物件在置空之後返回陣列
$a = [
'a' => 1,
'b' => 2,
];
dump(json_encode($a));
// "{"a":1,"b":2}"
"{}"
unset($a['a']);
dump(json_encode($a));
// "{"b":2}"
// 這裡置空之後返回陣列
unset($a['b']);
dump(json_encode($a));
// []
// 需要對型別進行強制轉換
dump(json_encode((object) $a));
// "{}"
本作品採用《CC 協議》,轉載必須註明作者和本文連結