Я сейчас просто лопну от злости на этот код:
$entity_id = 0;
$data1[0] = (string)$data1[0];
$a1 = (string)"";
if (($data1[0] != $a1)) {
$entity_id = get_supcode_entity_id($data1[0],$term_id);
}
elseif (($data1[0] == $a1) || ($entity_id == 0)) {
$entity_id = get_supname_entity_id($data1[1],$term_id);
}
print ";$data1[0];$data1[1];$data1[2];$data1[3];<br/>";
смотрим на xdebug информацию: $data1[0] = "" и a1 = ""; но почему то постоянно выполняется условие if (($data1[0] != $a1)) - ну как же так?! Они же равны! И та и другая переменная одного типа string.
В чем грабли?
С ув., Алексей
Вложение | Размер |
---|---|
![]() | 21.4 КБ |
Комментарии
Да может это поможет? Но данные в поля берутся из файла csv, который имеет такой вид:
"art";"Name";"price";"rest"
;"Uggi Mod. 51260";113;1
;"Uggi Mod. 55601";113;7
;"Uggi Mod. 55602";113;3
Соответственно поле art пустое обычно (именно в этом файле).
Разбрираем все прадварительно: $data1 = str_getcsv($remove_file,';','"','\\');
Сдается мне что функция str_getcsv возвращает для пустых значений поля art какую-то какашку!
Что посоветуете?
С ув., Алексей
По сабжу: != это не жесткое сравнение, т.е. return 0 != ""; вернет false, для жесткого это делается так === или !==, в этом случае будут учитываться и сами типы данных, но это информация к размышлению. А вообще, с чего Вы решили, что Ваша конструкция if не работает?
По коменту - ничего не понял
не-не-не-не
у меня никакого return 0 нет.
Пробовал менять !=, == на !== и === ну все равно не срабатывает и все...
Ставил уже условие и is_null и empty - не работает и все!
С ув., Алексей
продолжаем изыскания:
$aaa = strlen($data[0]);
$bbb = strlen($a1);
знаете что получается? А вот что
$aaa - длина строки 3 !!!! ????
$bbb - длина строки 0 !!!!
Блиииннн ну почему????
С ув., Алексей
Ага блин! Есть!
Короче в переменную $data1[0] - при работе str_getcsv, попадали символы перевода строки и возврата каретки: \n и \r
Пришлось писать такое преобразование:
$data1[0] = trim(preg_replace('/([^\pL\pN\pP\pS\pZ])|([\xC2\xA0])/u', '', $data1[0]));
trim добавил на всякий пожарный...
теперь $data1[0] это действительно "" а не "\n\r".
Вот такая история.
С ув., Алексей