Проверка формы PHP с использованием массивов - PullRequest
0 голосов
/ 24 февраля 2012

У меня есть следующие данные, которые обрабатываются в форме:

[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

Я хотел бы выполнить проверку для подтверждения следующего:

Если supplier_ids отличаются, я хочу убедиться, что поставщики находятся на другой территории. Используя вышеприведенное в качестве примера, форма потерпит неудачу, потому что item[1] и item[2] имеют поставщика с той же территории. Если item[2] не было включено, форма будет подтверждена.

1 Ответ

0 голосов
/ 24 февраля 2012

Это должно делать то, что вы хотите:

$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;
    }
  }
}
...