请给我一个表单参数,如下所示.我正在try 基于下面的模式构建一个动态表单.在我的数据库中,我有一个表列,它是json.我试图避免输入任何数据,但对象数组形式中定义的数据除外

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

表:employee和字段名为details,这是一种json类型.

details = [{}]

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

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

我需要一些验证判断,看看细节是否与表单中定义的键相同,否则会引发错误.

我还没有try 过这段代码,因为我不确定这是否可行.只是为了说明我正在努力实现的目标.

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';
        }
    }
}

下次的小贴士:试试看.这样可以避免不必要的问题,因为您可能已经从结果中得到了答案.如果没有,您至少有足够的调试信息与我们共享;-)

Php相关问答推荐

如何在数据库中添加注册表单中的动态新行?

SQLSTATE [42S02]:找不到基表或视图:1146 Table eshop. sessions不存在'''

无法使用DOMPDF在PDF中呈现非ANSI字符

我需要多个SELECT语句的结果(使用由php ECHO创建的表中显示的Limit(X)

在ShipStation for WooCommerce中使用自定义订单项目元数据

如何使用php-amqplib连接到ActiveMQ Classic Docker镜像

使用PHP阅读XML提要

Chillerlan/php-iOS名称字段的QR vCard错误

PHP -流加密启用服务器切断字节

shell_exec运行大型数据处理

如何在 Woocommerce 中自动删除旧的已完成订单

Laravel 10 中的自定义类未找到

使用 wp_footer 挂钩添加一些 CSS 不起作用

从插件更改主题功能,function_exists 不起作用

如何通过帖子自定义元数据进行查询

如何在自定义消息中包含 WooCommerce 选定的产品变体详细信息

同时执行odbc_execute、odbc_fetch_row和odbc_result

PHP / DOM : 解析 HTML 以提取基于类的数​​据

Symfony 自定义注销

如何通过本地主机在同一台 PC 上同时运行 Microsoft IIS 和 WAMP