Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组元素总是返回false_Php_Arrays_Boolean - Fatal编程技术网

PHP数组元素总是返回false

PHP数组元素总是返回false,php,arrays,boolean,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

我试图根据存储的表单数据填充一组复选框。不幸的是,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';
    }
}
$select
var\u dump
正确地返回布尔值
true
false
。但是
isSelected
元素总是返回一个空字符串。即使我将
$select
变量替换为硬编码的真值,或者使用1和0代替真值和假值,这也是正确的

我肯定我遗漏了一些非常基本的东西,但到目前为止我还没有找到解决办法。如果有任何帮助,我将不胜感激

编辑


感谢@Barmar,我对这个问题有了更多的了解。当我尝试为$field['choices'][$count]['isSelected']赋值时失败。日志显示“PHP注意:间接修改GF_Field_复选框的重载元素无效”。不幸的是,我不明白为什么这会是一个问题,因为从我可以看出,错误通常来自于使用uu get/set方法,而我在本例中并没有实际使用这些方法。我还尝试了在中提出的解决方案,但没有结果。是否有某种设置或配置可能会阻止此分配

我想我发现了错误。注意,您不需要在数组创建中使用$count变量,因为您是从0++开始的。此外,计数也可以短至$count++

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


它应该是
var\u dump($field['choices'][$count]['isSelected'])
。谢谢。这至少会返回一个布尔值,这对我来说更有意义。但是,它与$select的值不匹配,并且总是返回false。为什么要用包含相同字段的数组重新分配元素?如果您只想添加
isSelected
,只需执行
$field['choices'][$count]['isSelected']=$selected顺便说一句,您应该在这里切换测试顺序:
if($user\u meta[$input['id']]!=='')和&(isset($user\u meta[$input['id']])){
在测试变量的值是否等于某个值之前,你应该先测试变量是否已设置。我想不出在你发布的代码中会发生这种情况的任何原因。一定有一些不同。这与我在评论中说的是一样的。这个小错误不值得写一个真正的答案。但他也在评论中说,修复这个错误s仍然不起作用。
$field['choices'][]
是错误的。他不是在添加新数组,而是在替换同一数组中的元素。对$field['choices'][]的理解很好;那么就不需要重新分配值,只需直接更新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++;