Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Haski
0 / 0 / 0
Регистрация: 28.01.2015
Сообщений: 113
#1

Сравнить каждое число с одним

10.02.2018, 12:59. Просмотров 152. Ответов 12
Метки нет (Все метки)

Всем привет, подскажите, в пня въехал
вывожу из БД через foreach id всех записей
через GET получаю id который сейчас просматривается.

пробовал так но нифига.

PHP
1
2
3
4
5
6
7
8
9
$select_theme = (int)$_GET['theme'];
if (!$dop_theme) { 
foreach ($theme as $a) { 
$th = $a['id']; 
if ($select_theme != $th) { 
header("Location: index"); 
exit; 
}break;
}}
Как правильно сравнить ($select_theme) со всеми id ($th) и если совпадений нет выполнить условие.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2018, 12:59
Ответы с готовыми решениями:

не могу сравнить значение массива и число
не могу понять почему числовое значение из массива не сравнивается с цифрой, вот код: $result =...

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

Сравнить несколько чисел и вывести максимальное число
Как можно провести сравнение нескольких чисел и из этих чисел вывести число с максимальным...

Сравнить число из поля ввода, найти наименьшие значения и вывести их
Здравствуте. Подскажите, пожалуйста: есть переменные (ввожу значения в ручную), есть поле для...

Дан ряд чисел от 7 до -7, с шагом 0, 5 (арифметическая прогрессия). Нужно сравнить каждое число с 0. Если <0 то это число *5, если нет, то /5.
Дан ряд чисел от 7 до -7, с шагом 0, 5 (арифметическая прогрессия). Эти числа выводим. Нужно...

12
Jodah
Эксперт PHP
2706 / 2378 / 1013
Регистрация: 01.08.2012
Сообщений: 8,405
10.02.2018, 13:01 #2
http://php.net/manual/ru/function.in-array.php
1
Haski
0 / 0 / 0
Регистрация: 28.01.2015
Сообщений: 113
10.02.2018, 13:45  [ТС] #3
Спасибо, решил вопрос! +

Добавлено через 1 минуту
Возможно кому пригодится.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function CheckANDLocationDopTheme($dop_theme, $theme, $select_theme) {
        
        if (!$dop_theme) {
            $th = array();
          foreach ($theme as $a) {
            $th[] = $a['id'];
          }
 
          if (!in_array($select_theme, $th)) {
                header("Location: index");
                exit;
            }
 
          return true;
        }
        
    }
0
Para bellum
Эксперт PHP
4037 / 3010 / 960
Регистрация: 06.01.2011
Сообщений: 8,832
10.02.2018, 15:13 #4
Вот это:
PHP
1
2
3
4
$th = array();
          foreach ($theme as $a) {
            $th[] = $a['id'];
          }
Можно заменить вызовом array_column:
PHP
1
$th = array_column($theme, 'id');
1
Haski
0 / 0 / 0
Регистрация: 28.01.2015
Сообщений: 113
10.02.2018, 15:23  [ТС] #5
Спасибо, + Вам)
0
полудух
145 / 161 / 42
Регистрация: 15.03.2016
Сообщений: 987
11.02.2018, 05:48 #6
это всё тормозные способы, через array_flip() + isset() быстрее гораздо
но это всё только, если ключей нет
а если там есть ключ 'id', то почему не находит? значит нету там ключа.
0
Para bellum
Эксперт PHP
4037 / 3010 / 960
Регистрация: 06.01.2011
Сообщений: 8,832
11.02.2018, 07:04 #7
Цитата Сообщение от полудух Посмотреть сообщение
через array_flip() + isset() быстрее гораздо
Какой array_flip на таком массиве?
PHP
1
2
3
4
5
$posts = [
    ['id' => 7, 'title' => 'Первая запись'],
    ['id' => 10, 'title' => 'Вторая запись'],
    ['id' => 12, 'title' => 'Третья запись']
];
Остальное вообще не понял.
0
полудух
145 / 161 / 42
Регистрация: 15.03.2016
Сообщений: 987
11.02.2018, 09:05 #8
на таком массиве ваш in_array() не сработает
на таком массиве вот, в 3 секунды отрабатывает:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$posts = [
    ['id' => 7, 'title' => 'Первая запись'],
    ['id' => 10, 'title' => 'Вторая запись'],
    ['id' => 11, 'title' => 'Третья запись'],
    ['id' => 12, 'title' => 'Третья запись'],
    ['id' => 13, 'title' => 'Третья запись'],
    ['id' => 14, 'title' => 'Третья запись'],
    ['id' => 15, 'title' => 'Третья запись'],
    ['id' => 16, 'title' => 'Третья запись'],
    ['id' => 17, 'title' => 'Третья запись'],
    ['id' => 18, 'title' => 'Третья запись'],
];
 
for ($i=0; $i<9999999; $i++)
{
    $key = mt_rand(0,9);
    $posts[$key]{'id'} = $i;
    $find = mt_rand(0,$i);
    if ($posts[$key]['id'] === $find) {echo"random, bitch!\n";}
}
0
Para bellum
Эксперт PHP
4037 / 3010 / 960
Регистрация: 06.01.2011
Сообщений: 8,832
11.02.2018, 09:18 #9
Цитата Сообщение от полудух Посмотреть сообщение
на таком массиве ваш in_array() не сработает
Так для того array_column и была упомянута. У автора темы именно такой массив изначально. Поэтому не понял, как Вы array_flip собирались задействовать.
Ну да ладно.
0
полудух
145 / 161 / 42
Регистрация: 15.03.2016
Сообщений: 987
11.02.2018, 09:20 #10
если бы у него был такой массив, он бы нашёл 'id'
0
Para bellum
Эксперт PHP
4037 / 3010 / 960
Регистрация: 06.01.2011
Сообщений: 8,832
11.02.2018, 09:52 #11
Посмотрите внимательнее, пожалуйста.
Он обходит $theme как $a, а в $a уже есть ключ id. Отсюда вывод, что $theme вот такой:
PHP
1
2
3
4
5
$theme = [
    ['id' => 7, ...],
    ['id' => 10, ...],
    ['id' => 12, ...]
];
У него всё из-за этого началось:
PHP
1
2
3
4
5
$th = $a['id']; 
if ($select_theme != $th) { 
header("Location: index"); 
exit; 
}
Дело в том, что ID он получает нормально, но ведь нет гарантии, что ID из первого элемента массива $theme будет совпадать с $select_theme.
Если первый не совпал, происходит перенаправление и дело до второго элемента никогда не дойдёт.

А если смотреть в целом, то по его изначально условию в любом случае произойдёт перенаправление. Но сейчас не об этом.
0
полудух
145 / 161 / 42
Регистрация: 15.03.2016
Сообщений: 987
11.02.2018, 10:14 #12
верно, anyway, я бы конечно в таком виде id не держал. Если они вытаскивались из БД, то это (int) $_GET{'id'} надо было пихать во WHERE в запросе к БД
ну и если уж он решил через цикл, то на совпадение тогда кидать в ф-ю и грузить страницу, а если по истечению цикла не нашлось, то тогда индекс

а array_flip() + isset() прекрасно работает вместо этого:
Цитата Сообщение от Haski Посмотреть сообщение
PHP
1
if (!in_array($select_theme, $th)) { header("Location: index"); exit; }
0
Para bellum
Эксперт PHP
4037 / 3010 / 960
Регистрация: 06.01.2011
Сообщений: 8,832
11.02.2018, 10:32 #13
полудух, а так да. Тут надо у автора уточнять, какова цель. Если это всё делается для чего-то наподобие "страница не найдена", то решение действительно не лучшее.
0
11.02.2018, 10:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2018, 10:32

Даны две строки символов S1 и S2. В S1 каждое нечетное число увеличит на 5, а в S2 каждое четное число увеличить на 8
Даны две строки символов S1 и S2. В S1 каждое нечетное число увеличит на 5, а в S2 каждое четное...

Нужно, чтобы каждое записанное число записывалось в файл, каждое с новой строки
Нужно, чтобы каждое записанное число записывалось в файл, каждое с новой строки, желательно. В чем...

Вывести каждое 3 а потом каждое 4 число. Очередь
Дан типизированный файл целых чисел. За один просмотр файла вывести на экран каждое третье, а потом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru