Array和foreach返回非法字符串偏移量

时间:2014-06-02 16:22:46

标签: php multidimensional-array foreach

我有一个像:

这样的数组
array(
    'username' => array(
        'required' => true,
        'min' => 5,
        'max' => 20,
        'unique' => 'users',
        'name' => 'Username'
    )
);

这个数组进入函数(这不是完整的函数):

//$source = $_POST
public function validate($source, $items = array()) {
    foreach($items as $item => $rules) {
        foreach($rules as $rule => $rule_value) {
                    //db->sanitize = mysqli_real_escape_string()
            $value = $this->db->sanitize($source[$item]);

            if($rule === 'required' && empty($value)) {
                            //The problem is here with $rule['name']
                $this->addError($rule['name'].' is empty');
            }
        }
    }
}

所以我想使用数组中的'name'键来显示用户友好的输入字段名称,但它返回的全部是:警告:非法字符串偏移'名称'在

1 个答案:

答案 0 :(得分:2)

$rule$rule_value都是字符串。它们是$rules数组的键/值(分别)。

我猜你想要$rules['name']

if($rule === 'required' && empty($value)) {
    $this->addError($rules['name'].' is empty');
}