16 / 11 / 5
Регистрация: 04.04.2019
Сообщений: 380
|
|||||||||||
1 | |||||||||||
Проверить соседние значения многомерного массива на соответствие условию15.01.2021, 20:54. Просмотров 534. Ответов 12
Метки нет Все метки)
(
Доброго времени суток. Проверить чему равно одно значение массива просто. Понимаю как проверить соседние справа и слева значения. Но как проверить сверху и снизу? Попробую пояснить задачу на следующем примере. Есть многоуровневый массив типа:
Можно проверить чему равно каждое значение этого массива напр так:
Можно было бы использовать array_key_exists но эта функция работает только в одномерном. Пробовал использовать var_dump(array_key_exists() но тоже полностью не получается.
0
|
|
15.01.2021, 20:54 | |
Проверка значения на соответствие условию и подстановка значения Прибавить к дате количество дней и проверить результат на соответствие условию Вывод по условию из многомерного массива |
|
![]() 4443 / 3619 / 1520
Регистрация: 24.04.2014
Сообщений: 10,665
|
|
15.01.2021, 21:32 | 2 |
Есть массив $img. Есть два индекса $key и $keyVal. Вокруг него будут $img[$key + 1][$keyVal] $img[$key - 1][$keyVal] $img[$key1][$keyVal + 1] $img[$key][$keyVal - 1], при условии что каждый индекс не выходит за пределы диапозона. Можно проверять индексы как на принадлежность диапозону, так и с помощью array_key_exists
0
|
1712 / 1038 / 386
Регистрация: 13.06.2013
Сообщений: 3,525
|
|
15.01.2021, 21:39 | 3 |
Варианты:
1) Если индексы числовые, то это просто +-1 что влево/вправо, что верх/вниз с проверках выхода из диапазона. Через for возможно красивее получиться. 2) Если индексы строковые, то можно завести дополнительные переменные, где будешь хранить предыдущие индексы. 3) Создать дополнительные два массива, которые будут хранить индексы исходных массивов. По этим массивам можно пробегаться циклом, легко делать +-1 сдвиги и получать индексы в исходных массивах.
0
|
16 / 11 / 5
Регистрация: 04.04.2019
Сообщений: 380
|
||||||
15.01.2021, 22:06 [ТС] | 4 | |||||
Вот их никак выстроить и не могу. Как вариант пробовал:
Добавлено через 3 минуты Могут быть всякие Приблизительно понимаю, но не могу это реализовать Добавлено через 3 минуты Да, и проверять нужно на равенство значения 1 или 0
0
|
![]() 4443 / 3619 / 1520
Регистрация: 24.04.2014
Сообщений: 10,665
|
||||||
15.01.2021, 22:14 | 5 | |||||
1
|
16 / 11 / 5
Регистрация: 04.04.2019
Сообщений: 380
|
|||||||||||
16.01.2021, 01:27 [ТС] | 6 | ||||||||||
Никак не могу переделать ваш пример под свои нужды. Вообще стоит как бы несколько задач при проверке. Одна из них заменить все нули, вокруг которых есть единицы скажем на "Х". Я делаю так:
0
|
![]() 4443 / 3619 / 1520
Регистрация: 24.04.2014
Сообщений: 10,665
|
||||||
16.01.2021, 02:01 | 7 | |||||
И по хорошему бы использовать for, чтоб боковые элементы не проверять
2
|
![]() 4443 / 3619 / 1520
Регистрация: 24.04.2014
Сообщений: 10,665
|
||||||
16.01.2021, 02:07 | 8 | |||||
Исправленный вариант
1
|
16 / 11 / 5
Регистрация: 04.04.2019
Сообщений: 380
|
|
16.01.2021, 08:09 [ТС] | 9 |
)))) ну а как без этого? ))) На самом деле уже не знал как искать ошибку, отцентрировал, так сказать, думал каким-то образом пропускаю что-то когда располагаю на одном уровне. И это я ещё подчистил.
С моим массивом не работает https://ideone.com/qblFmZ
0
|
![]() 4443 / 3619 / 1520
Регистрация: 24.04.2014
Сообщений: 10,665
|
|
16.01.2021, 12:15 | 10 |
Во-первых индекс 'a'. Мой код именно для массива, структуры данных элементы которого расположены последовательно. Можно конечно и с произвольными индексами делать, благо в пхпшном масстве они будут именно в том порядке, которос их добавили, но зачем? Структуры данных подбирать чтобы решать задачу было проще, а не бороться с ними.
Чуть поправил код, сделал нормальные индексы и в условиях числа заменил на строки https://ideone.com/79tWvK Во-вторых во входных данных виден квадрат из нулей. Если и его тоже надо заменить, то мой код этого делать не будет. Это уже более сложная задача.
1
|
16 / 11 / 5
Регистрация: 04.04.2019
Сообщений: 380
|
|
16.01.2021, 14:48 [ТС] | 11 |
Это я его случайно оставил, баловался с разными вариантами, и потом не заметил.
О, а я кручусь вокруг да около. Спасибо. Так у меня в задаче не понятно в каком виде будет подан массив. По идее с числовыми индексами, но вроде ограничений нет. Если б только заменить все нули, то таких сложностей с проверкой по бокам не нужно было бы. Но вот следующая задача - поменять крайние нули в подобных квадратах. Понимаю, что в таком виде пока менять не будет. Но надеюсь по аналогии усложнить и добиться замены крайних. Есть ещё третья задача - находить дырки в таких квадратах/фигурах ))) Были мысли проверять это через массив. Создавать новый "квадратный" массив с максимальным "ребром" максимального вложенного массива или count "квадрата" и в нем аналогичным образом проверять, но уже для единиц. Может каким-то другим способом. Добавлено через 8 минут В спешке не дописал: максимального вложенного массива или count "квадрата" - имеется ввиду, что квадрата из нулей Добавлено через 22 минуты Кстати, думал сделать через добавление одного Elseif и Else. Сперва первой проверкой (вашей) проверить на окружение единицами, затем, как вторая крайность через Elseif - на окружение нулями, и потом все остальные через Else заменить на третью букву (цифру). Думаю алгоритм правильный, а вот реализация пока страдает.
0
|
16 / 11 / 5
Регистрация: 04.04.2019
Сообщений: 380
|
|||||||||||
17.01.2021, 11:59 [ТС] | 12 | ||||||||||
Что-то не получается у меня заменить в этом квадрате три пары внутренних нулей. Если только заменить в условии проверку с единицы на нуль:
https://ideone.com/MsfPpF
0
|
16 / 11 / 5
Регистрация: 04.04.2019
Сообщений: 380
|
|
18.01.2021, 01:55 [ТС] | 13 |
Сделал я почти все требования. Закрашивание одиночных нулей, закрашивание границ фигуры из нулей, закрашивание только внутренних, не касающихся единиц нулей фигуры.
https://ideone.com/9RwYss Не могу придумать как объединить в массив единицы внутри фигуры из нулей.
0
|
18.01.2021, 01:55 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Проверка каждого элемента массива, на соответствие условию Бинарные деревья. Проверить на соответствие значения узлов дерева членам арифметической прогрессии
Как получить нужные значения из многомерного массива? Из многомерного массива вытащить все значения в одномерный массив
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |