Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Работа с массивом

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
seifer
Отправлено: 28 Июля, 2017 - 17:51:52
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Июль 2017  


Помог: 0 раз(а)




Помогите разобраться с массивом (12 ,13, 43, 53, 66, 77, 123, 435) , получаем какое-либо число и нужно определить какому ключу он соответствует слева. Например ввели 40, значит его значение приравнивается к 13, а ключ соответственно будет 1. Спасибо за помощь.
 
 Top
Строитель Модератор
Отправлено: 28 Июля, 2017 - 18:21:15
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




PHP:
скопировать код в буфер обмена
  1. $need = 40; // Искомое число
  2. $arr = [12 ,13, 43, 53, 66, 77, 123, 435];
  3.  
  4. if (($key = array_search($need, $arr)) !== false) {
  5.     echo 'Ключ '. $key;
  6. } else {
  7.     echo 'Ключ не найден';
  8. }
 
 Top
seifer
Отправлено: 28 Июля, 2017 - 18:28:42
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Июль 2017  


Помог: 0 раз(а)




Строитель пишет:
PHP:
скопировать код в буфер обмена
  1. $need = 40; // Искомое число
  2. $arr = [12 ,13, 43, 53, 66, 77, 123, 435];
  3.  
  4. if (($key = array_search($need, $arr)) !== false) {
  5.     echo 'Ключ '. $key;
  6. } else {
  7.     echo 'Ключ не найден';
  8. }

Чуть не подходит, я сам разобрался
PHP:
скопировать код в буфер обмена
  1.  
  2. $arr = array(1,10,20,30,40,50,110,120,130,140);
  3.                         $num = 122;    
  4.         foreach($arr as $k=>$v){       
  5.                 if($num>$v){
  6.                         $key[] = $k;   
  7.                 }              
  8.         }
  9.                         echo end($key);
  10.  
 
 Top
Строитель Модератор
Отправлено: 28 Июля, 2017 - 18:57:35
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




seifer, у вас вроде бы не правильно идёт подсчёт. Вот вроде бы то, что было нужно (я сперва не внимательно прочитал задачу)
PHP:
скопировать код в буфер обмена
  1. $need = 40; // Искомое число
  2. $arr = [12 ,13, 43, 53, 66, 77, 123, 435];
  3.  
  4. for ($i = 0, $j = count($arr); $i < $j; $i++) {
  5.     if ($need >= $arr[$i] && $need < $arr[$i + 1]) {
  6.         echo 'Ключ: '. $i;
  7.     }
  8. }
 
 Top
LIME
Отправлено: 28 Июля, 2017 - 21:17:48
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель нагугли бинарный поиск
или метод деления пополам
ты привел полный просмотр
можно сделать горааааздо более быстрый алгоритм
у тебя скорость N (N - размер массива)
у бинарного поиска logN

PS: могу дать ссылку на хороший видео материал по алгоритмам
кратко и о главном
(Добавление)
хотя могу кратко пояснить
суть в том что берешь элемент посередине
если больше то берешь элемент посередине левой части
иначе шагаешь к среднему в правой части
итак пока не найдешь
сходимость будет быстрее чем полный просмотр...да?)
 
 Top
Строитель Модератор
Отправлено: 28 Июля, 2017 - 22:01:09
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




LIME пишет:
PS: могу дать ссылку на хороший видео материал по алгоритмам
Так, как ты объяснил, я не понял Радость Поэтому напиши пожалуйста ссылку.
 
 Top
LIME
Отправлено: 28 Июля, 2017 - 22:06:41
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель не вопрос
там курс для школьников, но многим разрабам было бы полезно...большинству к сожалению
https://www[dot]youtube[dot]com/watch?v=[dot][dot][dot]9hSmF3fTLKSwujkM
можно сразу смотреть лекцию про поиск если интересно понять что я невнятно пытался донести))
а лучше спокойно посмотреть с начала...это еще и просто интересно)
 
 Top
Строитель Модератор
Отправлено: 28 Июля, 2017 - 22:09:47
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




LIME пишет:
Строитель не вопрос
там курс для школьников, но многим разрабам было бы полезно...большинству к сожалению
https://www[dot]youtube[dot]com/watch?v=[dot][dot][dot]9hSmF3fTLKSwujkM
можно сразу смотреть лекцию про поиск если интересно понять что я невнятно пытался донести))
а лучше спокойно посмотреть с начала...это еще и просто интересно)
Благодарю )
 
 Top
LIME
Отправлено: 28 Июля, 2017 - 22:11:25
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель если понравится есть еще и более практический курс
тоесть как оно применяется в практике
если что пиши в лс
(Добавление)
тоесть те же алгоритмы но с условием поблочного чтения с диска итд
(Добавление)
и кстати там же поясняется что же такое индексы в принципе
поймешь как их юзать в бд в общих чертах...нууу...основы)
 
 Top
Строитель Модератор
Отправлено: 28 Июля, 2017 - 23:00:18
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Строитель пишет:
если понравится есть еще и более практический курс
тоесть как оно применяется в практике
если что пиши в лс
Ок, спс ) Я к тебе обращусь, т.к. у меня бывает масса вопросов. Вот только ты редко тут появляешься... Работа?
 
 Top
LIME
Отправлено: 28 Июля, 2017 - 23:03:40
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель пишет:
Работа?
она
а еще тут не бывает интересных тем
как уровень вырос так и стало скучно(как и многим другим)
но письма приходят ...если что в лс
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB