Почему приведенный ниже код возвращает false? Он должен вернуть истину.

in_array(
    '/wp-content/uploads/2020/08/SJ-R42027-CZ-SG-1-scaled-1.jpg',
    [
        'https://example.com/wp-content/uploads/2020/08/SJ-R42027-CZ-SG-1-scaled-1.jpg'
    ],
    false
)

Онлайн-редактор кода

-1
FooBar 14 Сен 2020 в 22:12

2 ответа

Лучший ответ

Я думаю, вы неправильно поняли «строгий» аргумент. Например.

in_array('3', [1, 2, 3, 4], true); // ==> false because the string '3' !== 3

Однако, если вы не передадите третий аргумент или передадите его false:

in_array('3', [1, 2, 3, 4]);        // ==> true because '3' == 3
in_array('3', [1, 2, 3, 4], false); // ==> true because '3' == 3

Однако в вашем случае строки не совпадают даже с свободным ==:

'/wp-content/uploads/2020/08/SJ-R42027-CZ-SG-1-scaled-1.jpg' == 
    'https://example.com/wp-content/uploads/2020/08/SJ-R42027-CZ-SG-1-scaled-1.jpg'
// ==> false
1
Sylwester 14 Сен 2020 в 19:31

Это правильное поведение.

В этом массиве нет строки /wp-content/uploads/2020/08/SJ-R42027-CZ-SG-1-scaled-1.jpg.

3
Magiczne 14 Сен 2020 в 19:16