Помогите правильно сделать проверку

Dukuй

Щас сменю себе статус
Регистрация
24 Фев 2009
Сообщения
308
Реакции
190
Доброго времени суток. Имеется список с данными:
Вася 1
Вася 2
Вася 3
Вася 4
Вася 5
Петя 1
Петя 2
Петя 3
Петя 4
Петя 5
Вова 1
Вова 2
Вова 3
Вова 4
Вова 5
И два селектора для каждой из строк (Вася,Вова,Петя) и (1,2,3,4,5)
Необходимо сделать поиск по файлу. До пустим в первом Селекторе выбрано только Петя. Результат поиска будет:
Петя 1
Петя 2
Петя 3
Петя 4
Петя 5
Если первый селектор пустой а во втором выбрано значение 2. Результат поиска будет:
Вася 2
Петя 2
Вова 2
Если в первом селекторе выбрано Вова, а во втором 4. Результат поиска будет:
Вова 4

Вот сейчас у меня данный код:

PHP:
foreach ($json as $key=>$value) {
    if($key > 0)
    {
    if(($value['user']['name']==$name && $name >=1) && ($value['user']['id']==$id && $id >=1))
    {
        echo "результат";
    }
}
}

Но работает он только если оба варианта из селекторов выбраны и подходят по зданным параметрам. Если задача не ясна, я попытаюсь обьяснить как то по другому. Очень прошу помощи, уже второй день парюсь над этой казалось бы не значительной проблемой. С уваженеим :)
 
Доброго времени суток. Имеется список с данными:
Вася 1
Вася 2
Вася 3
Вася 4
Вася 5
Петя 1
Петя 2
Петя 3
Петя 4
Петя 5
Вова 1
Вова 2
Вова 3
Вова 4
Вова 5
И два селектора для каждой из строк (Вася,Вова,Петя) и (1,2,3,4,5)
Необходимо сделать поиск по файлу. До пустим в первом Селекторе выбрано только Петя. Результат поиска будет:
Петя 1
Петя 2
Петя 3
Петя 4
Петя 5
Если первый селектор пустой а во втором выбрано значение 2. Результат поиска будет:
Вася 2
Петя 2
Вова 2
Если в первом селекторе выбрано Вова, а во втором 4. Результат поиска будет:
Вова 4

Вот сейчас у меня данный код:

PHP:
foreach ($json as $key=>$value) {
    if($key > 0)
    {
    if(($value['user']['name']==$name && $name >=1) && ($value['user']['id']==$id && $id >=1))
    {
        echo "результат";
    }
}
}

Но работает он только если оба варианта из селекторов выбраны и подходят по зданным параметрам. Если задача не ясна, я попытаюсь обьяснить как то по другому. Очень прошу помощи, уже второй день парюсь над этой казалось бы не значительной проблемой. С уваженеим :)

А зачем это?
$name >=1
$name это же тип string, а он не больше 0

PHP:
if(
($value['user']['name']=='' and $value['user']['id'] == $id) // Если имя пусто - проверяем по ID
or
($value['user']['id']=='' and $value['user']['name'] == $name) // Если ID пусто - проверяем по имени
or
($value['user']['id']==$id and $value['user']['name'] == $name) // Или проверяем оба варианта
){

}
 
А зачем это?
$name >=1
$name это же тип string, а он не больше 0

PHP:
if(
($value['user']['name']=='' and $value['user']['id'] == $id) // Если имя пусто - проверяем по ID
or
($value['user']['id']=='' and $value['user']['name'] == $name) // Если ID пусто - проверяем по имени
or
($value['user']['id']==$id and $value['user']['name'] == $name) // Или проверяем оба варианта
){

}
Данный вариант к сожалению не подходит. Так как селекторов около 10 штук.
Если перебирать все возможные варианты которые поставит пользователь в критериях поиска, получится очень громоздкий код.
 
Данный вариант к сожалению не подходит. Так как селекторов около 10 штук.
Если перебирать все возможные варианты которые поставит пользователь в критериях поиска, получится очень громоздкий код.
Тогда просто
PHP:
if($value['user']['id']==$id or $value['user']['name'] == $name)
 
Тогда просто
PHP:
if($value['user']['id']==$id or $value['user']['name'] == $name)
К сожалению тоже не вариант:) В таком случае результат будет выводиться если хотя бы один и критерий поиска совпадает. А остальные критерии он будет просто игнорировать.
До пустим в первом селекторе выбран (Вася), а во втором (3). Результат будет:
Вася 1
Вася 2
Вася 3
Вася 4
Вася 5
Петя 3
Вова 3
А нужно:
Вася 3
 
Возможно не совсем готовое решение, придется его под себя немного подправить.
PHP:
$array_selectors = array ('name', 'number', 'somting_else');
$array_zapolnen_selector = array(); // тут будут храниться только заполненные селекторы
foreach ( $array_selectors as $key => $values ){
if ( !empty($value['user'][$values]) ) { // тут подставляете свое проверяемое значение с нужным селектором. Селектор хранится в $values
$array_zapolnen_selector[] = $values; // формируем массив заполненных селекторов
}
}

// обходим массив с заполненными селекторами
$tempArray = $value; // тут храним временную выборку, которую постепенно фильтруем
foreach ( $array_zapolnen_selector as $key => $val ){
// проверка идет через "И", не через "Или"
if ($tempArray['user'][$val]==$$val ){ // тут перед val стоит 2 $$ . Первый преобразует селектор в текст, второй из текста делает имя переменной
$tempArray = $value['user'][$value];
}//if
else{
$tempArray = ''; // если ничего нету
}
}//foreach
var_dump( $tempArray );
 
Последнее редактирование:
Назад
Сверху