2012-02-24 3 views
-1

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

[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] не был включен, форма будет проверяться.

+0

Так Что ваш вопрос? Что вы пробовали? stackoverflow.com - не ваш генератор кода. – Basti

+0

Да согласен. Я собирался добавить код, который у меня есть, но он слишком грязный. Я постараюсь добавить что-то читаемое :) – xylar

ответ

0

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

$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; 
    } 
    } 
} 
Смежные вопросы