Как правильно извлечь значения из массива?

#1 19 октября 2012 в 20:27
Я понимаю что для профи это пара пустяков, но я пока только учусь)

Есть массив вида
Array ( [FILE] => Array ( [FileName] => ААААА [FileDateTime] => 1337674685 [FileSize] => 631742 [FileType] => 2 и т.д. Всего значений очень много.

Я значения вытаскиваю так
  1.  
  2. foreach($ex as $key=>$section) {
  3.  
  4. foreach($section as $name=>$val) {
  5. if ($name == ('FileName')) {
  6. $fname = $val;
  7. echo "$fname";
  8. }
  9.  
  10. if ($name == ('FileSize')) {
  11. $fsize = $val;
  12. echo "$fsize";
  13. }
  14.  
  15. if ($name == ('FileType')) {
  16. $ftype = $val;
  17. echo "$ftype";
  18. }
  19. }
  20. }
  21.  
Это маленький кусочек. Если выдергивать все значения таким образом, то получается огромная портянка.

Есть ли способ как сделать это более компактно?
#2 19 октября 2012 в 21:00
  1. foreach($ex as $key=>$section) {
  2. $fname = $section['FileName'];
  3. $fsize = $section['FileSize'];
  4.  
  5. }
#3 19 октября 2012 в 21:16
Ленивый, спасибо, все перепробовал, в том числе и такой же вариант но с другими переменными, а вот с $section не пробовал)
#4 19 октября 2012 в 21:26
Rossoman, можете для интереса попробовать вот так:
$fname = $ex['FILE']['FileName'];
$fsize = $ex['FILE']['FileSize'];

вообще без циклов
#5 19 октября 2012 в 21:34
сделал так
  1.  
  2. foreach($exif as $key=>$section) {
  3. $fname = $exif['FILE']['FileName'];
  4. $fsize = $exif['FILE']['FileSize'];
  5.  
  6.  
  7. echo "$fname<br/>";
  8. echo "$fsize<br/>";
  9.  
  10.  
  11. }
  12.  
но не понимаю почему echo значения вывело несколько раз?
sasovo.net/test.php
#6 19 октября 2012 в 21:35
а, ссори) из цикла убрал и все в норме
#7 19 октября 2012 в 21:38
во интересно, а почему первый предложенный вами вариант выводиться, если только он в цикле стоит, а второй корректно выводиться, если echo вне цикла??
#8 19 октября 2012 в 21:51
массив $ex может состоять из нескольких массивов
цикл foreach($ex as $key=>$section) {
позволяет "перебрать" поочерёдно все вложенные массивы и сделать с ними какие-то действия.
При этом вы сами указываете, что на каждом круге цикла помещать очередной массив в $section

Если же $ex содержит только один массив, то надобность в цикле отпадает, ХОТЯ и не является ошибкой, просто в этом случае цикл "прокрутится" только один раз
#9 19 октября 2012 в 23:09
Ленивый, спасибо за помощь и объяснения)
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.