我有一个计算字段(字段:length_of_stay),用于计算开始日期(字段:date_of_admission)与内容类型“患者”的当前日期之间的差异。
字段设置中的我的计算代码(PHP)是:
`$field_date_of_admission = array_pop(field_get_items($entity_type, $entity,
'field_date_of_admission'));
$start_date = new DateObject($field_date_of_admission['value'], '');
$current_date = new DateObject('now', '', 'm/d/Y');
$length_of_stay = $start_date->difference($current_date, 'days');
$entity_field[0]['value'] = $length_of_stay;
}`
显示代码为:
`$display_output = $entity_field_item['value'];`
它虽然从0日期开始有效。
我的问题是,当我想要停用病人时,计算字段会继续计算差异,这对我的应用程序来说似乎是错误的。 (内容类型患者也有字段:活动且可接受的值是或否)。
是否可以使用if语句或其他内容?我其实不懂PHP。 有人可以在这里提供一些指导吗?
答案 0 :(得分:0)
您需要使用以下代码替换代码,并且需要使用field_active
字段机器名称进行仔细检查。
$field_date_of_admission = array_pop(field_get_items($entity_type, $entity, 'field_date_of_admission'));
$active = array_pop(field_get_items($entity_type, $entity, 'field_active'));
if ($active) {
$start_date = new DateObject($field_date_of_admission['value'], '');
$current_date = new DateObject('now', '', 'm/d/Y');
$length_of_stay = $start_date->difference($current_date, 'days');
$entity_field[0]['value'] = $length_of_stay;
} else {
$entity_field[0]['value'] = 0;
}
希望这会帮助你。
答案 1 :(得分:0)
一位朋友给了我这个代码并为我工作,所以这里适合任何可能需要类似东西的人。它计算活动或非活动患者的住院时间。 内容类型:“患者”。字段:field_length_of_stay(计算字段),field_date_of_admission(日期),field_date_of_discharge(日期),field_active(布尔值1 /是,0 /否)。
$field_date_of_admission = array_pop(field_get_items($entity_type, $entity, 'field_date_of_admission'));
$field_active = field_get_items($entity_type, $entity, 'field_active');
$field_date_of_discharge = array_pop(field_get_items($entity_type, $entity, 'field_date_of_discharge'));
if ($field_active[0]['value'] == '1') {
$ad_date = new DateObject($field_date_of_admission['value'], '');
$current_date = new DateObject('now', '', 'm/d/Y');
$los = $ad_date->difference($current_date, 'days');
$entity_field[0]['value'] = $los;
} else {
$ad_date = new DateObject($field_date_of_admission['value'], '');
$dis_date = new DateObject($field_date_of_discharge['value'], '');
$los = $ad_date->difference($dis_date, 'days');
$entity_field[0]['value'] = $los;
}