PHP数组元素始终返回false

时间:2017-03-29 22:21:22

标签: php arrays boolean

我正在尝试根据存储的表单数据填充一组复选框。不幸的是,isSelected元素似乎只返回false。这是代码:

if($field['type'] == 'checkbox'){
    $inputs = $field['inputs'];
    $count = '0';
    foreach($inputs as $input){
        if(($user_meta[$input['id']] !== '') && (isset($user_meta[$input['id']]))){
           $select = true;
        }
        else{
            $select = false;
        }
        $field['choices'][$count] = array( 
            'text' => $field['choices'][$count]['text'], 
            'value' => $field['choices'][$count]['value'] , 
            'isSelected' => $select );
        var_dump($select);
        var_dump($field['isSelected']);
        $count = $count + '1';
    }
}

var_dump的{​​{1}}正确返回布局值$selecttrue值。但是false元素总是返回一个空字符串。即使我用硬编码的真值替换isSelected变量,或者使用1和0而不是true和false,也是如此。

我确定我遗漏了一些非常基本的东西,但到目前为止我找不到解决方案。我会感激任何帮助!

修改

感谢@Barmar我有更多关于这个问题的信息。当我尝试将值分配给$ field ['choices'] [$ count] ['isSelected']时,它失败了。日志显示“PHP注意:间接修改GF_Field_Checkbox的重载元素无效”。不幸的是,我不明白为什么这会是一个问题,因为我可以告诉我,错误通常来自于使用__get / set方法,在这种情况下我实际上没有使用它。我也尝试在"Indirect modification of overloaded element of SplFixedArray has no effect"中建议的解决方案无济于事。是否存在可能阻止此分配的某种设置或配置?

1 个答案:

答案 0 :(得分:0)

我相信我发现了这个错误。需要注意的是,您不需要在数组创建中使用$ count变量,因为您将从0 ++开始。计数也可以缩短为$ count ++;

看起来这不正确var_dump($field['isSelected']);,您的意思是var_dump($field['choices'][$count]['isSelected']);

$field['choices'][] = array( 
        'text' => $field['choices'][$count]['text'], 
        'value' => $field['choices'][$count]['value'] , 
        'isSelected' => $select );
var_dump($select);
var_dump($field['choices'][$count]['isSelected']);
$count++;
相关问题