2017-12-02 61 views
0

在我的示例中,我正在从Gravity Forms单选按钮字段(字段ID 4)中收集表单数据。字段ID 4对于选择“第一选择”具有值0。因此,为了解决这个问题,我使用了变量$ field_id,并通过使用$ entry [$ field_id](它的值为0)来收集选择值,并且此值的文本标签为“首选”。字段ID 4的值为0的预期结果是文本“首选”。我需要将其打印到文本文件中。我也做了以下内容:如预期php函数返回零而不是预期的字符串

$field_id = 4; 
    $field = GFFormsModel::get_field($form, $field_id); 
    $choice_text = $field['choices'][$entry[$field_id]]['text']; 

    $data = $choice_text; 

    file_put_contents($my_file,$data); 
    $tmpfile = fopen($my_file, "r"); 
    $contents = fread($tmpfile, filesize($my_file)); 

上述方法将打印“第一选择”我的文本文件。不过,我需要用一个函数来做到这一点。如果我尝试用下面的函数,我由于某种原因,返回0,要做到这一点:

function choiceLabel($field_id){ 
     $field = GFFormsModel::get_field($form, $field_id); 
     $choice_text = $field['choices'][$entry[$field_id]]['text']; 
     return $choice_text; 
    } 

    $data = choiceLabel(4); 

    file_put_contents($my_file,$data); 
    $tmpfile = fopen($my_file, "r"); 
    $contents = fread($tmpfile, filesize($my_file)); 

这将产生一个错误,指出“警告:FREAD():长度参数必须比0更大”。为什么我的函数返回0值而不是字符串“First Choice”?感谢您看这个。

+0

$项,它是在范围上的功能?您可能有一个范围问题,在该范围内您引用的函数中的某些内容不在范围内,因此为null或零。 –

+0

谢谢。我试图用0替换$ entry [$ field_id]并得到相同的结果。我认为GFFormsModel可能是问题。这是一个重力形式函数。也许它不能在我的功能内工作?在那种情况下,我甚至没有拉开这个领域。 –

回答

1

感谢大卫指点我的范围。

这工作:如果定义

function choiceLabel($field_id,$form,$entry){ 
     $field = GFFormsModel::get_field($form, $field_id); 
     $choice_text = $field['choices'][$entry[$field_id]]['text']; 
     return $choice_text; 
    } 

    $data = choiceLabel(4,$form,$entry);