所以我有以下方法可以将响应发送回我的API,但是我有一个小问题需要解决。
public function transform($employee)
{
return [
'birthday' => $employee['birthday']->format('Y-m-d'),
'hire_date' => $employee['hire_date']->format('Y-m-d'),
];
}
'birthday' and 'hire_date'
返回值,但是如果没有值,有没有办法我可以定义一个空字符串?
类似这样的事情:'birthday' => $employee['birthday']->format('Y-m-d') :? '',
答案 0 :(得分:1)
是的,您可以这样做:
public function transform($employee)
{
return [
'birthday' => !empty($employee['birthday']->format('Y-m-d')) ? $employee['birthday']->format('Y-m-d') : "",
'hire_date' => !empty($employee['hire_date']->format('Y-m-d')) ? $employee['hire_date']->format('Y-m-d') : "",
];
}
另外,如果您运行的是php 7或更高版本,则可以像这样使用null coalescing operator
:
public function transform($employee)
{
return [
'birthday' => $employee['birthday']->format('Y-m-d') ?? ""
'hire_date' => $employee['hire_date']->format('Y-m-d') ?? "",
];
}
中找到更多信息
PS。如注释中指出的那样,日期format
函数将始终返回某些内容,如果$employee['birthday']
为空,则将发出警告。因此最好像这样将支票放在$employee['birthday']
上:
'birthday' => !empty($employee['birthday']) ?
$employee['birthday']->format('Y-m-d') "",
答案 1 :(得分:0)
由于当没有值存在时(显然不是空的),这些值存储为@Pointcut("within(my.package.MyTargetClass) && execution(* a01(*)) && args(request)")
public void callAtMyServiceSecurityAnnotation(Mono<?> request) {}
,因此我们可以尝试'0000-00-00'
来解决这个问题。
strcmp()
答案 2 :(得分:0)
有时候,将内容分解为易于阅读的简短命令会更容易。
public function transform($employee)
{
$birthday = $employee['birthday'];
$hire_date = $employee['hire_date'];
$birthday = (!empty($birthday)) ? $birthday->format('Y-m-d') : '';
$hire_date = (!empty($hire_date)) ? $hire_date->format('Y-m-d') : '';
return [
'birthday' => $birthday,
'hire_date' => $hire_date,
];
}
如果您希望代码不重复,则可以执行以下操作:
public function transform($employee)
{
$dates = [$employee['birthday'], $employee['hire_date']];
foreach ($dates as $index => $date) {
$dates[$index] = !empty($date) ? $date->format('Y-m-d') : '';
}
return $dates;
}
如果要增加要处理的日期数,只需将日期添加到dates数组中即可。无需进一步更改。