【问题标题】:Array and foreach return Illegal string offset数组和foreach返回非法字符串偏移
【发布时间】:2014-06-02 16:22:46
【问题描述】:

我有一个类似的数组:

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' 键来显示用户友好的输入字段名称,但它返回的只是:警告:非法字符串偏移 'name' in

【问题讨论】:

  • $rule$rule_value 都是字符串。它们是您的 $rules 数组的键/值(分别)。我猜你想要$rules['name']
  • @RocketHazmat 感谢您的回答解决了这个问题。非常愚蠢,我无法想出我自己的想法:P
  • 我们都会时不时犯一些愚蠢的错误 :)
  • @RocketHazmat 如果您将其作为答案发布,我可以在解决后关闭问题

标签: php multidimensional-array foreach


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 2019-03-01
    相关资源
    最近更新 更多