Вопрос по массивам

musicant

Новичок
Вопрос по массивам

Доброй ночи!

Навожу марафет в коде;
Сокращаю все, что только можно.

Вот возник вопрос...
Есть массив
PHP:
$resultList=array("$start_date", "$country_name", "$hotname", "$stars", "$nights",  "$beds", "$extbeds", "$adults", "$children", 
"$value", "$curr_name" );
А для вывода на экран нужно получить вот такой массив
PHP:
$valueList=array("$start_date", "$country_name",  "[B]$hotname ($stars)[/B]", "$nights",  "[B]$beds / $extbeds[/B]", "[B]$adults / $children[/B]",
 "[B]$value<br />$curr_name[/B]" );
Такое возможно или лучше не париться?
Массивы раза в два длиннее, просто здесь я привел сокращенный вариант
 

ps2007

Новичок
musicant, насколько я понял, тебе нужно вывести данные в определенном формате (учись ясно выражать свои мысли).
1) Данные сами по себе не имеют никакого внешнего вида. Никто же не говорит так: "Правильно ли выглядит мой массив на экране ?" или "Моя запись в базе выглядит неэстетично на экране". Это данные, а не оформление.
2) За внешний вид отвечает Вид (View, смотри MVC) или шаблон. Поэтому строка
$valueList=array("$start_date", "$country_name", "$hotname ($stars)", "$nights", "$beds / $extbeds", "$adults / $children",
"$value<br />$curr_name" );
выглядит абсурдно.
3) Как ты будешь иметь доступ к элементам массива ? по индексу ? подумай об этом.
Вот как должен выглядеть массив с данными:
PHP:
$resultList=array(
	'start_date' => $start_date,
	'country_name' => $country_name,
	'hotname' => $hotname,
	..........................
	'value' => $value,
	'curr_name' => $curr_name
);
 

musicant

Новичок
Автор оригинала: ps2007
учись ясно выражать свои мысли
Изначально было так:
PHP:
while ($row = mysql_fetch_assoc($result)) {

$country_name=mysql_real_escape_string($row['country_name']);
$resort_name=mysql_real_escape_string($row['resort_name']); 
$board_name=mysql_real_escape_string($row['board_name']);
$nights=mysql_real_escape_string($row['nights']);
$adults=mysql_real_escape_string($row['adults']);
$children=mysql_real_escape_string($row['children']);
$roomcat=mysql_real_escape_string($row['roomcat']);
$room_id=mysql_real_escape_string($row['room_id']);
$RoomTypeName=mysql_real_escape_string($row['RoomTypeName']);
$beds=mysql_real_escape_string($row['beds']);
$extbeds=mysql_real_escape_string($row['extbeds']);
$start_date=mysql_real_escape_string($row['start_date']);
$value=mysql_real_escape_string($row['value']);
$city_name=mysql_real_escape_string($row['city_name']);
$hotname=mysql_real_escape_string($row['hotname']);
$stars=mysql_real_escape_string($row['stars']);
$curr_name=mysql_real_escape_string($row['curr_name']);

$valueList=array("$start_date", "$country_name", "$resort_name", "$city_name", "$hotname ($stars)", "$nights",
"$board_name", "$RoomTypeName", "$roomcat", "$beds / $extbeds", "$adults / $children", "$value<br />$curr_name" );
///вывод данных
print"<tr>";
foreach($valueList as $val){ print "<td>  $val </td>"; }
print"</tr>";
Хотел сократить первую часть кода. получилось так:
PHP:
while ($row = mysql_fetch_assoc($result)) {
$resultList=array("start_date", "country_name", "resort_name", "city_name", "hotname", "stars", "nights",
 "board_name", "RoomTypeName", "roomcat", "beds", "extbeds", "adults", "children", "value", "curr_name" );
$resList=array();
foreach ($resultList as $val){
$n='$row[';
$resList[]="$$val=mysql_real_escape_string($n'$val']);";
}

$valueList=array(....
И вот тут я пришел в тупик, так как получаю один массив, а перед выводом на экран нужно некоторые пары переменных "объединить".

Решил оставить как было.
 

zerkms

TDD infected
Команда форума
musicant
чтобы сказать, как лучше - нужно знать, что нужно.
 

musicant

Новичок
zerkms
вместо пачки строк вида $country_name=mysql_real_escape_string($row['country_name']); , записать в массив соответствующие имена полей и в цикле привести их к виду $country_name=mysql_real_escape_string($row['country_name']);
как-то так.
мне ночью не пришло в голову ничего лучше, чем
$resList=array();
foreach ($resultList as $val){
$n='$row[';
$resList[]="$$val=mysql_real_escape_string($n'$val']);";
}

Криво объяснил :)
 

zerkms

TDD infected
Команда форума
зачем тебе отдельные переменные, если есть массив уже с данными?
 

Фанат

oncle terrible
Команда форума
я тоже внесу свою лепту недоумения.
если строки выводятся на экран, то зачем к ним применяется mysql_real_escape_string?
 

Фанат

oncle terrible
Команда форума
так какая у нас конечная цель?
где код, который выводит данные на экран?
 

musicant

Новичок
Автор оригинала: *****
так какая у нас конечная цель?
где код, который выводит данные на экран?
вот код

PHP:
while ($row = mysql_fetch_assoc($result)) { 
$country_name=$row['country_name']; 
$resort_name=$row['resort_name'];  
$board_name=$row['board_name']; 
и т.д......
далее мне нужно нарисовать на странице ячейки таблицы и залить туда данные. причем некоторые переменные я хочу записать в одну ячейку (например "название отеля (количество звезд))"
PHP:
$valueList=array("$start_date", "$country_name", "$resort_name", "$city_name", "$hotname ($stars)", "$nights", 
"$board_name", "$RoomTypeName", "$roomcat", "$beds / $extbeds", "$adults / $children", "$value<br />$curr_name" ); 
///вывод данных 
print"<tr>"; 
foreach($valueList as $val){ print "<td>  $val </td>"; } 
print"</tr>";
Сейчас все работает, просто я вчера увлекся сокращением объема кода и задумался, как сократить кучу строк $some_name=$row['some_name'];
Сейчас уже жалею об этом (т.к. "лучшее" - враг хорошего)
 

zerkms

TDD infected
Команда форума
musicant
повторяю свои два вопроса:
1. почему не выводить сразу из массива
2. зачем кавычки вокруг переменных
 

Фанат

oncle terrible
Команда форума
это лушчее враг хорошего, а худшее.
попробуй почитать что-нибудь о шаблонах.
редактировать такой "html" будет очень неудобно.
а если уж придется сделать одной из ячеек другое выравнивание...
HTML должен выглядеть, как HTML

PHP:
<tr> 
<td><?=$start_date?></td>
...
<td><?=$adults?>/ <?=$children?></td>
</tr>
все выглядит нормально
понятно, какая переменная где выводится
можно отредактировать внешний вид

вот к чему надо было стремиться, а не к сокращению
 

musicant

Новичок
Автор оригинала: zerkms
musicant
повторяю свои два вопроса:
1. почему не выводить сразу из массива
2. зачем кавычки вокруг переменных
1. (цитата) ....далее мне нужно нарисовать на странице ячейки таблицы и залить туда данные. причем некоторые переменные я хочу записать в одну ячейку (например "название отеля (количество звезд))"

2. без кавычек мне не записать в массиве такую строку - $название отеля ($количество звезд)
 
Сверху