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
Форумы портала PHP.SU :: Версия для печати :: Вывод названия переменной
Форумы портала PHP.SU » » Вопросы новичков » Вывод названия переменной

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

1. Klein - 14 Августа, 2011 - 22:01:39 - перейти к сообщению
Добрый вечер,

Решил вывести информацию из EXIF фотографии, в красивом и наглядном виде. Остановился на реализации с помощью табличной верстки со стилями.
В первой колонке у меня название параметра, как то "Имя фотографии", "Дата снимка", "Страна" и т.д. Во второй значения этих параметров. Сейчас у меня все в таком виде:

Привожу отрывок кода:
PHP:
скопировать код в буфер обмена
  1.  
  2. $image = "../gallery/001.jpg";
  3. $exif = exif_read_data($image, 0, true);
  4.  
  5. $filename =
  6.    '<tr>
  7.       <td width="125px" align="right">Name:</td>
  8.       <td width="182px" align="left" class="exif_form">' .$exif['FILE']['FileName']. '</td>
  9.   </tr>';
  10.  
  11. $width =
  12.    '<tr>
  13.       <td width="125px" align="right">Width:</td>
  14.      <td width="182px" align="left" class="exif_form">' .$exif['COMPUTED']['Width']. ' px</td>
  15.   </tr>';
  16.  


PHP:
скопировать код в буфер обмена
  1.  
  2. echo '<table width="100%" cellpadding="0" border="0" cellspacing="6" class="exif_table">'
  3.   .$filename
  4.   .$date
  5.   .$time
  6.   .$country
  7.   .$state
  8.   .$city.
  9. '</table>';
  10.  

И так далее, больше 20ти разных параметров.




Возможно ли как-то вывести имя переменной, как название первой колонки, а ее значение, как параметр во второй колонке? Значений много получается, и приходится дублировать одно и то же, за исключением самого названия, которое совпадает с переменной. Вот и хотелось бы как-то это упростить.

Что-то подобное:
PHP:
скопировать код в буфер обмена
  1.  
  2. $table_start =
  3.    '<tr>
  4.      <td width="125px" align="right">' НАЗВАНИЕ ИСПОЛЬЗУЕМОЙ ПЕРЕМЕННОЙ '</td>
  5.      <td width="182px" align="left" class="exif_form">';
  6. $table_end= '</td></tr>';
  7. $filename = $table_start. $exif['FILE']['FileName']. $table_end;
  8. $width = $table_start. $exif['COMPUTED']['Width']. $table_end;
  9.  

На мой взгляд так легче и таблицу менять, и записать получиться короче. Но как это сделать, ума не приложу.
2. LIME - 14 Августа, 2011 - 22:09:34 - перейти к сообщению
http://php.su/functions/?key это ?
(Добавление)
или может foreach ($arr as $name=>$value) ...
3. Klein - 14 Августа, 2011 - 22:46:33 - перейти к сообщению
Это видимо что-то другое. ((
Мне нужно:
PHP:
скопировать код в буфер обмена
  1.  
  2. $table_start =
  3.    '<tr>
  4.       <td width="125px" align="right">' НАЗВАНИЕ ПЕРЕМЕННОЙ '</td>
  5.       <td width="182px" align="left" class="exif_form">';
  6.  $table_end= '</td></tr>';
  7.  
  8. //К примеру тут, чтоб внутри $table_start вместо "НАЗВАНИЯ ПЕРЕМЕННОЙ" появилось "Filename"
  9. $filename = $table_start. $exif['FILE']['FileName']. $table_end;
  10.  
  11. //Тут вместо "НАЗВАНИЯ ПЕРЕМЕННОЙ" появилось "Width"
  12. $width = $table_start. $exif['COMPUTED']['Width']. $table_end;
  13.  
  14. //Тут появилось "Height"
  15. $height = $table_start. $exif['COMPUTED']['Height']. $table_end;
  16.  
  17. //А тут появилось "Date"
  18. $date = $table_start. $dd.' '.$mm.' '.$yy. $table_end;
  19.  


И так далее.
Сложность еще в том, что нет точной последовательности. На некоторых снимках отсутствуют какие-то метаданные, и пустые строки с неизвестными значениями при этом не должны выводиться.

К примеру на одной фотографии такая последовательность:
Filename, Date, Time, Country, State, City, Width, Height...
А на другой могут отсутствовать GPS данные, и тогда:
Filename, Date, Time, Width, Height...
Пустые строки не выводятся...
4. ams - 14 Августа, 2011 - 22:50:31 - перейти к сообщению
Может не правильно понял, ну покажу пример небольшой, а дальше сам придумаешь Улыбка

PHP:
скопировать код в буфер обмена
  1.  
  2. echo 'text '.'$exif[\'FILE\'][\'FileName\']'.' text';
  3.  
5. LIME - 14 Августа, 2011 - 22:51:23 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. foreach ($exif['FILE'] as $name=>$value){
  2.          $table_start. =
  3.              '<tr>
  4.            <td width="125px" align="right">' .$name. '</td>
  5.            <td width="182px" align="left" class="exif_form">';
  6. }

ну это примерно
додумаете сами надеюсь как это применить
(Добавление)
ams вопервых неправильно поняли
а во 2ых зачем экранировать кавычки и конкатенировать в одном выводе? для разнообразия? ))
(Добавление)
PHP:
скопировать код в буфер обмена
  1. echo 'text '.$exif['FILE']['FileName'].' text';

(Добавление)
Klein а $exif['FILE']['FileName'] в моем примере можно вписать через $value
6. ams - 14 Августа, 2011 - 23:01:10 - перейти к сообщению
LIME, я понял так:

echo '<td>$width</td>'; // показует саму переменную
echo "<td>$width</td>"; // значение

за это я подумал, чтобы для удобства Улыбка
7. LIME - 14 Августа, 2011 - 23:04:05 - перейти к сообщению
ams тогда конкатенация ненужна
8. Klein - 14 Августа, 2011 - 23:19:43 - перейти к сообщению
LIME пишет:
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach ($exif['FILE'] as $name=>$value){
  3.          $table_start. =
  4.              '<tr>
  5.           <td width="125px" align="right">' .$name. '</td>
  6.           <td width="182px" align="left" class="exif_form">';
  7. }
  8.  


Тоже не выходит что нужно(
Как я понял тут $name получит значение названия файла, а мне нужно чтоб он получил просто название переменной, т.е. в данном случае $Filename.

А у меня вообще получилось такое
9. LIME - 14 Августа, 2011 - 23:26:34 - перейти к сообщению
Klein неправильно поняли
цикл будет пробегать все значения из массива $exif['FILE'] и для каждого значения в переменную $name будет помещен ключ (имя) а в переменную $value значение
таким образом можете выводить пары имя-значение

п.с.: если вам приходится это объяснять могу только посоветовать учить пхп прежде чем за что-либо браться
(Добавление)
http://www.php.su/learnphp/cs/?cycles тут почитайте про foreach
10. Klein - 14 Августа, 2011 - 23:33:12 - перейти к сообщению
Да вот столкнулся с PHP случайно) Сам чуть другим занимаюсь...
На счет того, чтоб цикл пробегал все значения - мне это не нужно. Он тогда будет выводить все данные из EXIF, а там много мусора.
Плюс ко всему я буду многие данные приводить к другому виду, прежде чем отобразиться. К примеру значение диафрагмы в EXIF храниться в таком виде 40/10, а нужно показать в таком f/4. И так далее, многое берется, преобразуется и потом выводится. Сырые данные не к чему(
11. LIME - 14 Августа, 2011 - 23:36:57 - перейти к сообщению
Klein пишет:
Он тогда будет выводить все данные из EXIF
в приведенном примере не все а только элементы массива $exif['FILE']
вам надо объяснять что такое двумерный массив?
Klein пишет:
И так далее, многое берется, преобразуется и потом выводится
преобразуете $value и выводите
какие проблемы
(Добавление)
возможно вам действительно будет проще и быстрее написать все "ручками" чем вникать
если в будущем не планируете что-то делать на пхп
12. Klein - 14 Августа, 2011 - 23:46:47 - перейти к сообщению
а можно вам на почту скинуть весь код, а вы мне ткнете пальцем, где я пошел не по тому пути? А то я чувствую у меня вышел супер-быдло-код)))
13. LIME - 14 Августа, 2011 - 23:51:12 - перейти к сообщению
Klein можете и сюда скинуть
тут можно файл приаттачить
14. Klein - 14 Августа, 2011 - 23:57:25 - перейти к сообщению
)
15. LIME - 15 Августа, 2011 - 00:16:36 - перейти к сообщению
посмотрев код я не совсем понял чего же вы хотите?
вы берете по чаще всего по 1 или немногим более более элементов из массива
причем наверное не все подряд а некоторые выборочно
зачем вам это автоматизировать? пропишите все что вам надо и все
ну да повторяются ну и что?

 

Powered by ExBB FM 1.0 RC1