php strpos делает странные вещи

У меня есть этот код здесь и по какой-то причине он будет принимать либо первые 3 ifs как true, либо последний if. Я не могу заставить его перейти к одному или другому, не удалив одно из них.

Например, входной сигнал — «TBN D664» или «Другой», и он будет там разбираться. Но независимо от того, какой вклад я добавлю, «TAN D664» всегда верен.

Даже если я переставлю их, они все равно скажут, что какое бы утверждение ни было первым, это правда. Я использовал подобный код в другом месте в моей программе, и он работает нормально, только в этом месте это доставляет мне проблемы.

if($Category == 'Petrochemical') {

if (strpos($_SESSION['Petrochemical_app'],'TAN D664') !== false) {
$i=37;
}

elseif (strpos($_SESSION['Petrochemical_app'],'TBN D2869') !== false) {
$i=37;
}

elseif (strpos($_SESSION['Petrochemical_app'],'TBN D4739') !== false) {
$i=37;
}

elseif ((strpos($_SESSION['Petrochemical_app'],'H2S') !== false) ||
(strpos($_SESSION['Petrochemical_app'],'Other') !== false)) {
if( (strpos($sample,'75to120') !==false) ||
(strpos($sample,'120to200') !==false) ||
(strpos($sample,'200ormore') !==false)){
$i=26;
}
if( (strpos($sample,'10to30') !== false) ||
(strpos($sample,'less10') !== false)){
$i=24;
}
if(strpos($sample,'30to75') !== false) {
$i=25;
}
}
}

Если это помогает, это флажок, где он получает этот конкретный выбор.

<fieldset>
<b>Petrochemical</b><br />
<input onclick="document.getElementById('selector_button').disabled = false; document.getElementById('charstype').disabled = true;"name="Petrochemical_app[]" type="checkbox" value="TAN D664" id="D664"> <label for="D664">TAN: D664</label>
<input onclick="document.getElementById('selector_button').disabled = false; document.getElementById('charstype').disabled = true;"name="Petrochemical_app[]" type="checkbox" value="TBN D2869" id="D2869"> <label for="D2869">TBN: D2869</label>
<input onclick="document.getElementById('selector_button').disabled = false; document.getElementById('charstype').disabled = true;"name="Petrochemical_app[]" type="checkbox" value="TBN D4739" id="D4739"> <label for="D4739">TBN: D4739</label>
<input onclick="document.getElementById('selector_button').disabled = false; document.getElementById('charstype').disabled = true;"name="Petrochemical_app[]" type="checkbox" value="H2S and Mercaptan Bromine Number" id="H2S"> <label for="H2S">H2S and Mercaptan Bromine Number</label>
<input onclick="document.getElementById('selector_button').disabled = false; document.getElementById('charstype').disabled = true;"name="Petrochemical_app[]" type="checkbox" value="Other" id="Other"> <label for="Other">Other: specify below</label>
<label for="Other5">Please Specify:</label> <input name="Other5" type="text" id="Other5">
</fieldset>

Вот где я превращаю это в сессию

$_SESSION['Petrochemical_app']=$_POST['Petrochemical_app'];

Также, когда я делаю print_r (); Я получаю это или оно меняется всякий раз, когда я делаю другой выбор с флажками

Array ( [0] => TBN D4739 )

Также, если у меня все они отмечены, я получаю это

Array ( [0] => TAN D664 [1] => TBN D2869 [2] => TBN D4739 [3] => H2S and Mercaptan Bromine Number [4] => Other )

Постскриптум Спасибо за помощь с парнями в формате кода! Я долгое время creeper stackoverflow, и это мой первый пост: P

-2

Решение

После ваших обновлений ошибка вполне понятна, я думаю.

if (strpos($_SESSION['Petrochemical_app'],'TAN D664') !== false) {
$i=37;
}

должно быть

if (in_array('TAN D664', $_SESSION['Petrochemical_app'])) {
$i=37;
}

Поскольку форма имеет несколько флажков с одинаковыми именами, значения помещаются в массив, который затем сохраняется в сеансе. Ваш код использовал строковые функции в этом массиве, которые, очевидно, не могут работать. Вы хотите проверить, есть ли конкретное значение в массиве и, следовательно, следует использовать in_array([needle], [haystack]) чтобы проверить это.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]