Здравствуйте! Прошу помощи. В гугл не отправлять - уже был ))). Для профи думаю это легко, но для меня как-то, туговато. Есть код, для парсинга курса валют. Код (Text): <? /************ * getCourse() * Получение курса валют * $currency - массив с кодами валют * Возвращает массив со значениями курсов заданных валют * (ключ каждого элемента массива - название валюты на русском языке) * Коды валют можно найти здесь: http://www.cbr.ru/scripts/XML_val.asp?d=0 * Например: * Доллар США - R01235 * Евро - R01239 * Фунт стерлингов - R01035 *************/ function getCourse($currency = array('R01235','R01239','R01810')){ $value = array(); $xml = DOMDocument::loadXML(file_get_contents('http://www.cbr.ru/scripts/XML_daily.asp')); if($xml && is_array($currency)){ $xpc = new DOMXPath($xml); foreach($currency as $cur){ $nominal = 1; $name = ''; $res = $xpc->query('/ValCurs/Valute[@ID="'.$cur.'"]/Nominal/text()'); if($res->length) $nominal = floatval(str_replace(',','.',$res->item(0)->data)); $res = $xpc->query('/ValCurs/Valute[@ID="'.$cur.'"]/Name/text()'); if($res->length) $name = $res->item(0)->data; $res = $xpc->query('/ValCurs/Valute[@ID="'.$cur.'"]/Value/text()'); if($res->length) $value[$name] = floatval(str_replace(',','.',$res->item(0)->data))/$nominal; else $value[$name] = 'курс не найден'; } } return $value; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Информер курса валют - pgood.ru</title> <style type="text/css"> table{ font:12px Arial, Helvetica, sans-serif; color:#333; } table td,th{ padding:5px; text-align:left; } </style> </head> <body> <table border="0" cellspacing="0" cellpadding="5"> <tr> <th colspan="2">Курс валют на <?=date('d.m.Y')?></th> </tr> <? $cur = getCourse(); foreach($cur as $name => $value){ ?> <tr> <th><?=$name?></th> <td><?=number_format($value,4,',',' ')?> руб.</td> </tr> <? } ?> </table> </body> </html> В итоге он выводит курсы валют в столбик все разом. А как мне, например, вывести курс одной валюты в одном месте (где мне надо), курс другой валюты в другом месте, а курс третьей - в третьем? Я так понимаю, что надо здесь что-то поменять: Код (Text): <? $cur = getCourse(); foreach($cur as $name => $value){ ?> <tr> <th><?=$name?></th> <td><?=number_format($value,4,',',' ')?> руб.</td> </tr> <? } ?> Если можно, то более подробно написать, что бы мне и себя и Вас не мучать вопросами )) А то с php я не очень дружу. Заранее спасибо!
Ваша переменная $cur имеет вид: Array ( [Доллар США] => 35.1627 [Евро] => 47.5505 [Южноафриканских рэндов] => 3.28752 ) Безобразно, конечно, но жить можно. Так что там, где вам надо вывести курс доллара, пишите $cur['Доллар США'], где курс евро - $cur['Евро']. Хотя по-хорошему надо бы функцию переделать, чтобы ключом была не строка с кириллицей, а хотя бы те же самые коды типа R01235, иначе можете с кодировкой намаяться. Но попробуйте пока так.
Для начала тебе надо понимать в каком виде данные хранятся. Сделай Код (PHP): $cur = getCourse(); echo '<pre>'.var_export($cur, true).'</pre>'; дальше сам как-нибудь… Хыиду опередил и всё хорошо расписал)))
Что- то не получается...... Вот, что выводит исходный код Если я правильно понял, то $cur['Доллар США'] надо вставить вот сюда? Код (Text): <? $cur['Доллар США'] = getCourse(); foreach($cur as $name => $value){ ?> <tr> <th><?=$name?></th> <td><?=number_format($value,4,',',' ')?> руб.</td> </tr> <? } ?> Если так, то получается вот так.... видимо, что то я не так делаю.....
не туда вставил. (гусары, молчать!) $cur = getCourse(); это получение данных. оставь его как есть тебе надо менять вывод, а не получение. то есть ПОСЛЕ получения, в своей таблице делаешь что-то типа <?= $cur['Доллар США'] ?>