如何通过标签文本获取Gravity Forms字段属性并提取指定属性
如何从返回数组中提取指定属性并赋值变量
嗨,我来帮你搞定这个问题!你已经成功把函数改成返回包含字段值和ID的数组了,接下来提取这些属性其实非常简单,这里有几种实用的方法:
1. 直接通过数组键名提取(最基础通用)
先调用函数拿到完整的属性数组,然后通过数组的键名('value'和'id')来提取对应的值。一定要记得先判断函数返回的不是false,避免出现「Undefined array key」的错误:
// 调用函数获取字段属性数组 $mobile_phone_field = get_field_atts_by_label( $form, $entry, "Mobile Phone" ); // 提取属性并赋值 if ($mobile_phone_field) { $mobile_phone_value = $mobile_phone_field['value']; $mobile_phone_id = $mobile_phone_field['id']; } else { // 处理未找到对应标签字段的情况,比如给默认值 $mobile_phone_value = ''; $mobile_phone_id = 0; }
2. 使用解构赋值(PHP 7.1+ 简洁写法)
如果你的PHP版本是7.1及以上,可以用解构语法直接把数组中的键映射到变量,代码更简洁:
$mobile_phone_field = get_field_atts_by_label( $form, $entry, "Mobile Phone" ); if ($mobile_phone_field) { // 直接解构数组到变量 ['value' => $mobile_phone_value, 'id' => $mobile_phone_id] = $mobile_phone_field; } else { $mobile_phone_value = ''; $mobile_phone_id = 0; }
3. 扩展函数:支持直接返回单个属性(可选优化)
如果你经常需要单独获取某个属性,不妨给函数加个可选参数,让它可以直接返回单个值,这样用起来更灵活:
function get_field_atts_by_label( $form, $entry, $label, $return_attr = null ) { foreach ( $form['fields'] as $field ) { $lead_key = $field->label; if ( strToLower( $lead_key ) == strToLower( $label ) ) { $field_atts = array( 'value' => $entry[ $field->id ], 'id' => $field->id, ); // 如果指定了要返回的属性,直接返回该值 if ($return_attr && isset($field_atts[$return_attr])) { return $field_atts[$return_attr]; } // 否则返回完整属性数组 return $field_atts; } } return false; } // 使用示例:直接获取值 $mobile_phone_value = get_field_atts_by_label( $form, $entry, "Mobile Phone", 'value' ); // 直接获取ID $mobile_phone_id = get_field_atts_by_label( $form, $entry, "Mobile Phone", 'id' ); // 依然可以获取完整数组 $mobile_phone_field = get_field_atts_by_label( $form, $entry, "Mobile Phone" );
这样不管你是需要单个属性还是完整数组,这个函数都能满足需求~
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

