Не работает in_array ?

D
На сайте с 28.06.2008
Offline
1101
218

Сам код

$month = [ '0' => 'Январь','1' => 'Февраль','2' => 'Март','3' => 'Апрель','4' => 'Май','5' => 'Июнь',
'6' => 'Июль','7' => 'Август','8' => 'Сентябрь','9' => 'Октябрь','10' => 'Ноябрь','11' => 'Декабрь'];

$test = ['0'=> 'Сентябрь" data-wages = "112301.9',
'1'=> 'Октябрь" data-wages = "112291.9' ];

for ($i=11;$i>=0;$i--){

if (in_array($month[$i],$test)){
var_dump($month[$i]);
break;
}
}

Почему ничего не ищет?

---------- Добавлено 15.11.2019 в 08:50 ----------

Блин кажется понял - совпадение должно быть только полным?

Если так то все ищет

$test = ['0'=> 'Сентябрь',

'1'=> '"Октябрь" data-wages = "112291.9"' ];

А как искать по куску слова?

---------- Добавлено 15.11.2019 в 09:31 ----------

Решил забить на массивы и искать через строку и опять уперся в ступор:

Так работает

$test = ['0'=> '"Сентябрь" data-wages = "112301.9"',
'1'=> '"Октябрь" data-wages = "112291.9"' ];
//var_dump($test);

for ($i=11;$i>=0;$i--){

for ($n=11;$n>=0;$n--){
if (strpos($test[$i],$month[$n])){
var_dump($test[$i]);
break 2;
}
}
}

а если убрать двойные кавычки из строк, то уже нет, ПОЧЕМУ???

$test = ['0'=> 'Сентябрь" data-wages = "112301.9',
'1'=> 'Октябрь" data-wages = "112291.9' ];
//var_dump($test);

for ($i=11;$i>=0;$i--){

for ($n=11;$n>=0;$n--){
if (strpos($test[$i],$month[$n])){
var_dump($test[$i]);
break 2;
}
}
}



---------- Добавлено 15.11.2019 в 09:40 ----------

В общем победил эту хрень регулярками, они меня еще никогда не подводили :)))

for ($i=11;$i>=0;$i--){

for ($n=11;$n>=0;$n--){

if (preg_match('~'.$month[$n].'~m',$test[$i])){
var_dump($test[$i]);
break 2;
}
}
}
ДП
На сайте с 23.11.2009
Offline
203
#1

Хорошо, что разобрались. Про двойные кавычки: strpos() возвращает номер символа, с которого начинается искомая подстрока в строке. Если у вас были двойные кавычки - то название месяца встречалось с 1 позиции, если вы их убрали - то с 0. А в условии 0 срабатывал как false после приведения типов. В вашем случае надо было


if(strpos($test[$i],$month[$n]) !== false){}

писать, чтобы было сравнение с учётом типа данных.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий