【问题标题】:PHP form validation using arrays使用数组的 PHP 表单验证
【发布时间】:2012-02-24 16:41:52
【问题描述】:

我有以下数据正在表单中处理:

[item][1][supplier_id] = 1
[item][1][territory_id] = 1
[item][1][cost] = 99.99

[item][2][supplier_id] = 2
[item][2][territory_id] = 1
[item][2][cost] = 99.99

[item][3][supplier_id] = 3
[item][3][territory_id] = 2
[item][3][cost] = 99.99

我想执行验证检查以满足以下条件:

如果供应商 ID 不同,我想确保供应商来自不同的地区。以上述为例,表单将失败,因为 item[1]item[2] 有来自同一地区的供应商。如果不包含item[2],则表单将验证。

【问题讨论】:

  • 那么你的问题是什么?你试过什么? stackoverflow.com 不是您的首选代码生成器。
  • 是的,同意。我打算添加我有 atm 的代码,但它太乱了。我会尝试添加一些可读的内容:)

标签: php arrays kohana kohana-orm


【解决方案1】:

这应该做你想做的:

$items[0]["supplier_id"]  = 1;
$items[0]["territory_id"] = 1;
$items[0]["cost"]         = 99.99;
$items[0]["valid"]        = true;

$items[1]["supplier_id"]  = 2;
$items[1]["territory_id"] = 1;
$items[1]["cost"]         = 99.99;
$items[1]["valid"]        = true;

$items[2]["supplier_id"]  = 3;
$items[2]["territory_id"] = 2;
$items[2]["cost"]         = 99.99;
$items[2]["valid"]        = true;

// Loop through all $items (forwards)
for ($i = 0; $i < count($items); $i++) {
  // Loop through all $items before $i (backwards)
  for ($j = $i-1; $j >= 0; $j--) {
    if ($items[$i]["supplier_id"] != $items[$j]["supplier_id"]) {
      // Skip
      continue;
    } elseif ($items[$i]["territory_id"] == $items[$j]["territory_id"]) {
      // Invalidate
      $items[$j]["valid"] = false;
      // Stop looking for matches
      break;
    }
  }
}

【讨论】:

    猜你喜欢
    • 2014-03-17
    • 2018-06-30
    • 1970-01-01
    • 2011-12-02
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多