2010-07-07 4 views
0

У меня есть строка и она может содержать значения, подобные этому $ string = '1,2,3,4,5'; Я хочу поставить чек, который будет видеть, если строка содержит 4 или 5 , если он содержит 4 или 5, то я хочу повторить успех в противном случае, если она содержит 9 или 10, я хочу эхо неудачиcheck in a string php

Я знаю, что есть in_array, но не уверен, как его использовать спасибо

ответ

4

Вы можете проверить число 4, как это:

if(in_array('4', explode(',', $string))) echo "it's in there"; 

или просто с помощью строки поиска:

if(strpos(',4,', ','.$string.',') !== false) echo "it's in there"; 
+0

, чтобы немного расширить ответ Скотта, обычно вы всегда используете строковую функцию для сравнения строк, strpos - один из вариантов - обратите внимание, что он используется сильным! == FALSE как простой! = FALSE также будет true для 0 который является допустимым смещением строки (если 4 или 5 был первым символом в строке 0, будет возвращен) - также стоит отметить, что многие также дали ответы in_array только потому, что вы упомянули об этом, и потому что в этом конкретном случае вы можете взорваться на запятая, чтобы получить массив, обычно мы будем придерживаться строковых функций для этого. – nathan

1

in_array не поможет вам здесь, потому что у вас есть строка, а не массив. Что вы ищете является StrPos() функция:

http://php.net/manual/en/function.strpos.php

Обратите внимание, что если он не найдет то, что он ищет в строке, он будет возвращать ложь сама по себе, так что все, что вы необходимо проверить, возвращает ли он результат или нет, чтобы соответствовать вашим условиям.

+0

Нет, 'strpos' не будет работать в случае OP: s. С '49' в строке результат будет как истинным, так и ложным. –

+0

'strpos' может работать, если используется правильно (см. Ответ Скотта Сондерса) – Jeff

1

вы можете использовать strpos(), чтобы проверить наличие подстроки внутри строки, например:

if(strpos(','.$string.',', ','.$number_to_check_for.',') !== false) { 
    //success, substring was found 
} else { 
    //error, substring was not found. 
} 

или вы могли бы взорвать его в массив, то используйте in_array():

$array = explode(',',$string); 

if(in_array($number_to_check_for, $array)) { 
    //success substring found 
} else { 
    //error, substring not found 
} 

Но Я бы порекомендовал первое решение, так как оно чище и эффективнее.

+1

Ваш пример strpos() не будет работать, если строка $ может содержать 4, 14 и 41 –

+0

@Scott Saunders, извините, что я неаккуратно. исправленный. – jordanstephens

1
$set = array (1,2,3...,n); //you can use range() function if the numbers going one by one or explode if you have a string 
if(in_array($var,$set)) 
{ 
    Echo 'IS in ARRAY!'; 
} else { 
    Echo 'fail'; 
} 
1
$goodString = '1,2,3,4,5'; 
$badString = '1,2,3,7,8,9,10'; 

function checkString($str) { 
    $arr = explode(',', $str); 
    $message = 'no message'; 
    if (
     in_array(4, $arr)|| 
     in_array(5, $arr) 
    ) { 
     $message = 'success'; 
    } else if (
     in_array(9, $arr)|| 
     in_array(10, $arr) 
    ) { 
     $message = 'fail'; 
    } 
    echo $message; 
} 

checkString($goodString); // prints success 
checkString($badString); // prints fail 
1

Проверить все сразу :)

if(in_array(array(4,5), explode(',', $string))) echo "success";

if(in_array(array(9,10), explode(',', $string))) echo "failure";