PHP获取最新文件路径

时间:2014-06-23 18:04:22

标签: php json csv

我使用以下内容将CSV转换为JSON(https://gist.github.com/robflaherty/1185299)。我需要修改它,以便它不是使用确切的文件URL路径,而是在目录中提取最新的文件URL,因为它的来源"在$ feed。

任何帮助都会很棒!我已尝试使用此处PHP: Get the Latest File Addition in a Directory中的代码,但似乎无法确定如何对其进行修改以使其正常工作。

<?php
header('Content-type: application/json');

// Set your CSV feed
$feed = 'http://myurl.com/test.csv';

// Arrays we'll use later
$keys = array();
$newArray = array();

// Function to convert CSV into associative array
function csvToArray($file, $delimiter) { 
if (($handle = fopen($file, 'r')) !== FALSE) { 
$i = 0; 
while (($lineArray = fgetcsv($handle, 4000, $delimiter, '"')) !== FALSE) { 
  for ($j = 0; $j < count($lineArray); $j++) { 
    $arr[$i][$j] = $lineArray[$j]; 
  } 
  $i++; 
} 
fclose($handle); 
} 
return $arr; 
} 

// Do it
$data = csvToArray($feed, ',');

// Set number of elements (minus 1 because we shift off the first row)
$count = count($data) - 1;

//Use first row for names  
$labels = array_shift($data);  

foreach ($labels as $label) {
$keys[] = $label;
}

// Add Ids, just in case we want them later
$keys[] = 'id';

for ($i = 0; $i < $count; $i++) {
$data[$i][] = $i;
}

// Bring it all together
for ($j = 0; $j < $count; $j++) {
$d = array_combine($keys, $data[$j]);
$newArray[$j] = $d;
}

// Print it out as JSON
echo json_encode($newArray);

?>

2 个答案:

答案 0 :(得分:0)

这是一个难以回答的问题,因为没有足够的细节。 以下是一些需要回答的问题。

1)。您是否正在创建正在读取的csv文件?如果你是,你只需确保你想要阅读的文件被调用&#34; latest.csv&#34;当你去创建&#34; latest.csv&#34;你检查一下现有的&#34; latest.csv&#34;并首先重命名/存档。然后,您的目录包含存档,但最新存档的名称始终相同。

2)。如果您没有创建csv文件,那么您可能想询问csv文件的提供者是否有方法可以识别最新的文件,当然,如果他们提供了他们,他们期望为每个人提供最新的饲料,并有机会这样做。

3)。如果您不了解提供商并想要猜测,请查看文件的命名方式并尝试预测最新的文件。例如,如果它们看起来包含一个月和一年,则在预测的下一个最新文件上执行file_exists()(如果可以)。再一次,只是一种可能性。

答案 1 :(得分:0)

根据您的评论,如果文件驻留在同一服务器上或可在支持file功能的文件系统上访问,则:

array_multisort(array_map('filemtime', $files=glob('/path/to/*.csv')), SORT_DESC, $files);
$newest = $files[0];

对于远程访问,您可以查看以下内容:How can I download the most recent file on FTP with PHP?