PHP - strpos для элементов массива?

По какой-то причине я не могу заставить strpos работать для поиска в моем массиве, даже если $jobList[1] и $titlesearch являются одними и теми же значениями... Извините, если это что-то очевидное, но я все еще новичок в кодировании!

Я начинаю с моего массива $data, который выглядит так:

Array
(
    [0] => P0001    Lifeguard   descexample 18/09/18    parttime    fixedterm       mail    vic

    [2] => P0002    IT Manager  descexample 18/09/18    fulltime    ongoing post    mail    sa

)

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

for ($i = 0; $i < count($data); $i++) {
    $jobList = explode("\t", $data[$i]);
}

Array
(
    [0] => P0001
    [1] => Lifeguard
    [2] => descexample  
    [3] => 18/09/18
    [4] => parttime
    [5] => fixedterm
    [6] => 
    [7] => mail
    [8] => vic

)
Array
(
    [0] => P0002
    [1] => IT Manager
    [2] => descexample  
    [3] => 18/09/18
    [4] => fulltime
    [5] => ongoing
    [6] => post
    [7] => mail
    [8] => sa

)

Теперь я пытаюсь просмотреть эти массивы из пользовательского ввода $titlesearch и найти совпадения с названиями должностей $jobList[1]:

if (strpos($jobList[1], $titlesearch)) {
        echo "nice one";
    }

Независимо от того, какие циклы я пробую, strpos никогда не возвращает true, даже если я повторяю значения, и они оба дают один и тот же результат, поэтому я действительно не уверен, что я делаю неправильно :'(

Любая помощь приветствуется!


person Community    schedule 18.09.2018    source источник
comment
Это потому, что strpos не возвращает логическое значение. Он возвращает позицию в найденной подстроке (которая может быть 0) или -1, если не найдена.   -  person Vince0789    schedule 18.09.2018
comment
$jobList = explode("\t", $data[$i]);-›вам не кажется, что вы перезаписываете значения. вы не получите второй массив в эту переменную.   -  person Anant Kumar Singh    schedule 18.09.2018
comment
@Vince0789 strpos может возвращать логическое значение. Но он никогда не возвращает -1, это не javascript.   -  person u_mulder    schedule 18.09.2018
comment
@u_mulder ах да, ты прав. Возвращаемое значение — логическое значение false, если подстрока не найдена, однако функция может также вернуть 0, если подстрока была найдена в начале строки, поэтому сравнение все равно должно выполняться с идентичным оператором (===).   -  person Vince0789    schedule 18.09.2018


Ответы (1)


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

Попробуйте что-то вроде этого:

if (strpos($jobList[1], $titlesearch) !== false) {
        echo "nice one";
}
person César Ferreira    schedule 18.09.2018
comment
Ура! Это объясняет, почему это сработало, когда я тоже возился с ним на днях! Спасибо большое :) - person ; 18.09.2018