繁体   English   中英

是否可以在 php 中使用另一个 json 数组来验证 json 对象

[英]Is there to validate json objects with another array of json in php

请我有一个表单参数如下。 我正在尝试基于以下架构构建动态表单。 在我的数据库中,我有一个表列,它是 json。 我试图指导不要输入任何数据,除了那些在对象的表单数组中定义的数据

formDefinition = [
          {
            "key": "name",
            "value": "",
            "datatype": "string"
           },
           {
            "key": "sex",
            "value": " ",
            "datatype": "choice"
           },
           {
            "key": "occupation",
            "value": "",
            "datatype": "string"
           },
           {
            "key": "isRetired",
            "value": ,
            "datatype": "boolean"
           }
        ]

表:员工和字段名称是json类型的详细信息

details = [{}]

当用户填写表单并提交时,它将如下所示。

details = [{"name": "something something"}, {"sex": "male"}, {"occupation": "something" }]

我需要一些验证检查以查看详细信息是否具有与表单中定义的相同的键,否则它应该抛出错误。

我没有尝试过这段代码,因为我不确定它是否可能。 只是为了说明我想要实现的目标。

public function dataValidator($data)
{
  foreach($data as $key => $value){
    foreach(formDefinition as form){
       if($key !== form['key']){
          return "invalid"
        }
     }
  }
}

看起来没那么糟糕。 但是,只需要一个循环:

public function dataValidator($data)
{
    foreach($data as $key => $value) {
        $valid = current(array_filter($formDefinition, function($form) use($key) { return $form->key === $key; }));
        if(!$valid) {
            return 'invalid';
        }
    }
}

下次的简短提示:试试吧。 这可能会避免不必要的问题,因为您可能已经从结果中得到答案。 如果没有,您至少有足够的调试信息与我们分享;-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM