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]   

> Без описания
Sany74
Отправлено: 13 Января, 2016 - 00:26:41
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Янв. 2016  


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




Уважаемые Гуру, помогите...
Есть массив данных

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <?PHP
  4.  
  5. $massive='USD/RUR 111,USD/UAH 111,EUR/USD 111,USD/BYR 15677.5,BTC/USD 1775.6,USD/TRY 1.875,USD/KZT 195,BTC/RUR 111,BTC/UAH 111,BTC/EUR 111,BTC/TRY 111,';
  6.  
  7. $arr = explode(",",$massive);
  8.  
  9. for($i = 0; $i < count($arr); $i++)
  10.   {
  11. $arr1 = $arr[$i];
  12.  
  13.          
  14.        
  15. $a = preg_match("/RUR/", $arr1, $matches_b);
  16. $b = preg_match("/BTC/", $arr1, $matches_b);
  17. $c = preg_match("/[A-Z]+(?=\/)/", $arr1, $matches_c);
  18. $d = preg_match("/(?<=\/)[A-Z]+/", $arr1, $matches_d);
  19. $n = preg_match("/[0-9]+\.*[0-9]*+/", $arr1, $matches_n);
  20.  
  21. if ($a && $b){ // очень просто 1) BTC/RUR 111
  22.        
  23.         echo $host1 = $arr1."<br>";}
  24.  
  25.         if ($a && !$b){
  26.                
  27.                                                
  28.        
  29.         echo $host1 = $arr1."<br>";}
  30.  
  31. /* например вывод строки  тоже несложно
  32.  
  33. 2)  USD/RUR 111
  34.  
  35. дальше меня не хватает... как получить такой вид?
  36.  
  37. USD/RUR 111                            
  38.                         USD/UAH 111             BTC/UAH 111
  39.                         EUR/USD 111             BTC/EUR 111
  40.                         USD/BYR 15677.5 Эта строка не нужна т.к. она не ведет к BTC    
  41.                         USD/TRY 1.875           BTC/TRY 111
  42.                         USD/KZT 195     Эта строка не нужна т.к. она не ведет к BTC            
  43.  
  44.  
  45. */
  46.        
  47.  
  48. }
  49.  
  50. ?>
  51.  


Даны 2 параметра RUR и BTC
Как просчитать все варианты от RUR к BTC ?
1) ------------------------------btc/rur
2) usd/rur-------------------- btc/usd
3) usd/rur - - - usd/try - - - btc/try
4) usd/rur - - - usd/uah - - btc/uah
5) usd/rur - - - eur/usd - - - btc/eur

(Отредактировано автором: 13 Января, 2016 - 00:27:09)

 
 Top
google_funny
Отправлено: 13 Января, 2016 - 04:44:58
Post Id


Новичок


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


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




Я так и не смог понять, что вы там понаписали... вы можете доходчиво объяснить, что конкретно нужно.. я так понял, что нужно рассчитывать значения валютных пар на основе как-то одной валюты.. в любом случае, напишите внятно.. что нужно ... или просто строки во входящих данных заменять, или переставлять местами... из вашего кода практически ничего не понятно..
поэтому, написал простую функцию, что заносит значения валютных пар в массив, что позволит вам в дальнейшем производить с ними нужные операции.. (вот бы если бы за меня кто-то такую чепуху писал )) )

И зачем заменили почти все значения котировок на 111? дайте в оригинальном виде и приведите пример расчета конечных котировок.. с которыми действительно можно работать...

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. function calc_currencies ($data) {
  4.         $calculated_currencies= $currencies_values =  array();
  5.         $currencies = explode(",",$data);
  6.         foreach($currencies as $currency) {            
  7.                 $tmp0 = explode(' ',$currency);
  8.                 $currencies_values[$tmp0[0]] = $tmp0[1];                       
  9.                 }
  10.                 $main_curr = $currencies_values['BTC/RUR'];
  11.                 foreach ($currencies_values as $curr => $val) {
  12.                         if ($curr !='USD/BYR' && $curr !='USD/KZT') {
  13.                                 if ($curr =='BTC/RUR') {$calculated_currencies['BTC/RUR'][0] = $val; $calculated_currencies['BTC/RUR']['main'] = true;}
  14.                                 // вот тут вставляете свой алгоритм рассчета валюты..  я не знаю, как вы там считаете..
  15.                                 // если это вообще то, что вам нужно.  так и не понял, что вы хотите) поэтому вставляю данные без расчета.'
  16.                                 else $calculated_currencies[$curr] = $val;
  17.                         }
  18.                 }
  19.         return $calculated_currencies;//$currencies_values;  
  20. }
  21.  
  22. $data='USD/RUR 111,USD/UAH 111,EUR/USD 111,USD/BYR 15677.5,BTC/USD 1775.6,USD/TRY 1.875,USD/KZT 195,BTC/RUR 111,BTC/UAH 111,BTC/EUR 111,BTC/TRY 111'; ?>
  23.  
  24. <pre><?print_r(calc_currencies($data))?></pre>
  25.  

(Отредактировано автором: 13 Января, 2016 - 04:46:10)

 
 Top
Sany74
Отправлено: 13 Января, 2016 - 11:06:38
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Янв. 2016  


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




Понимаю, что коряво написал, извините!
1) Дано переменная $valuti: USD/RUR 111,USD/UAH 111,EUR/USD 1,2,USD/BYR 15677.5,BTC/USD 10.6,USD/TRY 1.875,USD/KZT 195,BTC/RUR 1211,BTC/UAH 1111,BTC/EUR 7,BTC/TRY 111
Из $valuti нужно извлечь все варианты валют:
т.е. получится : USD, RUR, UAH, EUR, BYR, KZT ... (вывести на экран) из этих данных, можно назначить 2 переменные, т.е.
2) Дано выбираем 2 переменные из массива: например $v1 = RUR; $v2 = BTC
3) Дано третья переменная значение первой $v1num = 12000 (RUR)
Далее нужно рассчитать все возможные цепочки от $v1 (RUR) до $v2 (BTC) с выводом этих цепочек и рассчетом на экран:

(у валюты RUR есть всего две пары это пара BTC/RUR и USD/RUR, первая пара то, что дает нам сразу BTC(BTC/RUR), а вторая пара дает USD(USD/RUR), теперь из USD ищем пару с BTC находим BTC/USD, но у USD есть еще пары, которые могут привести нас к BTC, те пары с USD которые не приводят к BTC нам не нужны например USD/KZT 195 и мы их пропускаем)
например :
Получаем на экране следующее
BTC/RUR 9,19 btc
(первое совпадение от RUR до BTC, рассчет rur разделить на btc)
USD/RUR 108,1usd -- BTC/USD 10,19 btc(вторая цепочка, от RUR до BTC совпадение)
USD/RUR 108,1usd -- USD/UAH 11999,1 uah-- BTC/UAH 10,8 btc (третья цепочка от RUR до BTC вывести на экран)
USD/RUR108,1usd -- EUR/USD 90 eur -- BTC/EUR 12,85 btc (четвертая цепочка от RUR до BTC вывести на экран и т.д.)[/b][/color]

Сама пара читается так USD/UAH 111:
1 USD = 111 UAH т.е. если у нас есть 2 usd то = 222 UAH (usd*111)
А если нам надо в обратную сторону, то делим (1/111) 1 uah = 0,009 USD

Т.е. получается нужно найти цепочку в $valuti от $v1 до $v2 и значение $v1num разделить или умножить на найденные значения.
(Добавление)
Я Хотел сделать массив вида:
USD/RUR 111
USD/UAH 111
EUR/USD 1,2
USD/BYR 15677.5
BTC/USD 10.6
USD/TRY 1.875
USD/KZT 195
BTC/RUR 1211
BTC/UAH 1111
BTC/EUR 7
BTC/TRY 111

Затем с использованием preg_match определить переменные
$a = RUR;
preg_match($a/, массив, ;$a_);
$aa = $a_[0];

$b = BTC;
preg_match(/$b, массив, ;$b_);
$bb= $b_[0];

preg_match(валюта/, массив, ;$с);
$сс = $с[0];

preg_match(/валюта, массив, ;$d);
$dd = $d[0];

preg_match(число, массив, ;$n);
$nn = $n[0];

Как бы привести массив к виду

$сс $dd $nn или $aa $bb $nn
$сс $dd $nn
$сс $dd $nn
$сс $dd $nn
$сс $dd $nn
$сс $dd $nn
$сс $dd $nn
$сс $dd $nn
$сс $dd $nn
$сс $dd $nn

А Затем придумать логику построения цепочки проходя по массиву.
что то вроде
if ($a && $b ) {найдена цепочка BTC/RUR, я получил массив [8] и могу сделать с ним что хоxу};
if ($a && !$b ) {найдены все остальные цепочки со значением RUR - переменной $a в данном случае это одно значение массива [0] USD/RUR 111}

как дальше я не придумал, хотя я нашел USD/RUR и теперь мне надо работать уже с USD а массивы [0] и [8] уже исключить из поиска

(Отредактировано автором: 13 Января, 2016 - 12:42:04)

 
 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