2016-09-19 5 views
1

Я создаю сайт Shopify для клиента, и мы работаем с приложением (Bespoke Shipping), которое позволяет писать PHP-код для управления передаваемыми переменными переменными , У меня есть тест с использованием цикла foreach, который я использую, чтобы проверить, отправляется ли заказ в состояние в нижних 48 штатах США. Этот тест всегда возвращает «true», когда он должен возвращать только «истину», когда массив нижних сокращений состояния 48 не соответствует состоянию, в которое он доставляется. Вот мой код: функцияФункция, что парс-массив всегда возвращается «True»

$usr_province = $DATA['destination']['province']; 

$is_lower_48 = false; 
$lower_48 = array('AL', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'FL', 'GA', 'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY', 'NC', 'ND', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA', 'WV', 'WI', 'WY'); 

foreach ($lower_48 as $m) { 
    if ($usr_province == $m) { 
     $is_lower_48 = true; 
    } 
} 

if (($DATA['destination']['country'] == 'US') && ($is_lower_48 == true)) { 
    /* apply the rules for lower 48 U.S. shipping */ 
} elseif (($DATA['destination']['country'] == 'US') && ($is_lower_48 == false)) { /* If the destination country is in the US and NOT in the lower 48 states */ 
    /* apply the rules for non-contiguous U.S. shipping */ 
} 
+0

так, если я читаю право '$ is_lower_48 = истина;' должно происходить только тогда, когда ' $ usr_province' не находится в массиве '$ lower_48', правильно? –

+3

dont loop: 'if (in_array ($ usr_province, $ lower_48))', при необходимости изменить файл – nogad

+0

Memor-X - наоборот. $ is_lower_48 должно быть установлено в true, если массив $ lower_48 содержит $ usr_province. – MarvinLazer

ответ

1

Использование in_array (в массиве), чтобы проверить значение присутствует внутри массива

$usr_province = $DATA['destination']['province']; 

$is_lower_48 = false; 
$lower_48 = array('AL', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'FL', 'GA', 'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY', 'NC', 'ND', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA', 'WV', 'WI', 'WY'); 

if(in_array($usr_province, $lower_48)) { 
    $is_lower_48 = true; 
} 


if (($DATA['destination']['country'] == 'US') && ($is_lower_48 == true)) { 
    /* apply the rules for lower 48 U.S. shipping */ 
} elseif (($DATA['destination']['country'] == 'US') && ($is_lower_48 == false)) { /* If the destination country is in the US and NOT in the lower 48 states */ 
    /* apply the rules for non-contiguous U.S. shipping */ 
} 
+0

Это сработало! Спасибо! – MarvinLazer

Смежные вопросы