PHP 5, 2 boyutlu bir dizi veri recursing

3 Cevap php

Döngüler ve iki boyutlu diziler "her" tarafından Bamboozled alıyorum, ve ben yani ayı ile beni (ve kelime "görüntü" ile tüm değişkenleri göz ardı lütfen bir php newb değilim - mp3s tüm hakkında, ben sadece 'yapmadım t xml öğretici değiştirebilirsiniz)

Ben bir dizindeki dosyaları listelemek net bir php işlevi bulundu, bir çıktısı:

Array
(
  [0] => audio/1.mp3
  [1] => audio/2.mp3
  [2] => audio/3.mp3
  [3] => audio/4.mp3
  [4] => audio/5.mp3
)
Beklendiği gibi.

Ve mp3 dosyaları hakkında biraz bilgi listeler başka.

$mp3datafile = 'audio/1.mp3';
$m = new mp3file($mp3datafile);
$mp3dataArray = $m->get_metadata();
print_r($mp3dataArray);
unset($mp3dataArray);

Çıktısı olan

Array
(
  [Filesize] => 31972
  [Encoding] => CBR
  [etc]
)

Otomatik olarak bir podcast için RSS oluşturmak için, ben her madde için XML oluşturmak gerekir. Şimdiye kadar iyi.

Bu benim xml yapıyorum nasıl

foreach ($imagearray as $key => $val) {
      $tnsoundfile = $xml_generator->addChild('item');
      $tnsoundfile->addChild('title', $podcasttitle);
$enclosure = $tnsoundfile->addChild('enclosure'); $enclosure->addAttribute('url', $val); // that's the filename $enclosure->addAttribute('length', $mp3dataArray[Filesize]); // << Length is file length, not time. But later I also need $mp3dataArray[Length mm:ss] for duration tag. $enclosure->addAttribute('type', 'audio/mpeg');
$tnsoundfile->addChild('guid', $path_to_image_dir.'/'.$val); }

(Yukarıdaki Ben şu anda doğru xml değil biliyoruz, kesildi, ama sadece neler olup bittiğini göstermek için idi).

Mükemmel. Dizinde olduğu gibi ama ben çok sayıda dosya için bunu yapmak gerekir.

So, I have an array of the names of the files in the directory in $mp3data And, I have an array of mp3 data in $mp3dataArray from one iteration of the get_metadata() function.

Ben şunları yaparsanız, o zaman ben dizinde 5 dosyaların mp3 verilerinin güzel bir liste olsun:

foreach ($mp3data as $key => $val) {
$mp3datafile = $val;
$m = new mp3file($mp3datafile);
$mp3dataArray = $m->get_metadata();
print_r($mp3dataArray);
unset($mp3dataArray);
}

Beklendiği gibi.

Ben mücadele ediyorum, ve birçok forum ve öğreticiler okuma rağmen günün en olmuştur Nerede 1,2,3,4 ve 5 geçer, böylece, dizinin "ikinci boyut" doldurmak için nasıl . mp3 (ya da ancak çok var), sonra bana yukarıdaki xml bölümde kullanmak için izin verir, meta ayıklar.

İşte ne var

foreach ($mp3data as $key => $val) {
$mp3datafile = $val;
$m = new mp3file($mp3datafile);
$mp3dataArray = $m->get_metadata();
$mp3testarray = array($mp3dataArray);
}
 print_r($mp3dataArray);

Olmamalı bu hat print_r ($ mp3dataArray); Ben daha önce olduğu gibi döngü recursed zaman yaptığı şekilde, bana mp3 5 veri çok güzel bir listesini verebilir misiniz?

3 Cevap

Bu deneyin

<?php
$mp3testarray = array();
foreach ($mp3data as $key => $val) {
    $mp3datafile = $val;
    $m = new mp3file($mp3datafile);
    $mp3dataArray = $m->get_metadata();
    $mp3testarray[] = array($mp3dataArray);
}
// check $mp3testarray[] 
print_r($mp3testarray);

?>

Her zaman döngü içinde, size $mp3dataArray yeniden atama vardır. Muhtemelen diziye eklemek yerine sadece bunu her zaman değiştirmek istiyor.

Bu kodu deneyin:

<?php

$mp3dataArray = array();                         //get array ready for each file
foreach ($mp3data as $key => $val) {             //for each file in dir
    $m = new mp3file($val);                      //get current file's mp3 info
    $mp3dataArray[] = array($m->get_metadata()); //store current mp3 info in next array element
}
var_dump($mp3dataArray);                         //display all of the array's contents

?>