[原] Json 数组之茴香豆的茴有几种写法
掘金 : 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 协议》,转载必须注明作者和本文链接