0

3つの異なるフォルダーに追加された最新のファイルを見つけるために、次のコードを記述しました。フォルダのディレクトリをpathという配列に保存しました。また、最新のファイルの名前を別の配列に格納します。

$path[0] = "/Applications/MAMP/htdocs/php_test/check";
$path[1] = "/Applications/MAMP/htdocs/php_test/check2";
$path[2] = "/Applications/MAMP/htdocs/php_test/check3";

for ($i=0; $i<=2; $i++){

$path_last = $path[$i]; // set the path
$latest_ctime = 0;
$latest_filename = '';    

 $d = dir($path_last);
while (false !== ($entry = $d->read())) {
  $filepath = "{$path_last}/{$entry}";
  if (is_file($filepath) && filectime($filepath) > $latest_ctime) {
$latest_ctime = filectime($filepath);
$latest_filename = $entry;
$array[$i] = $latest_filename ; // assign the names of the latest files in an array.
   }
  }

すべて正常に動作しますが、今は同じコードを関数に入れて、メインスクリプトで呼び出そうとしています。私はそれを呼び出すためにこのコードを使用します:

   include 'last_file.php'; // Include the function last_file
   $last_file = last_file();  // assign to the function a variable and call the function     

これが正しいかどうかはわかりません。私がやりたいのは、メインスクリプトで配列を返すことです。ここで、私が説明しようとしていることが明確になっていることを願っています。ありがとう。

これはlast_file関数です。

    function last_file(){

        for ($i=0; $i<=2; $i++){

     $path_last = $path[$i]; // set the path
      $latest_ctime = 0;
       $latest_filename = '';    

      $d = dir($path_last);
     while (false !== ($entry = $d->read())) {
      $filepath = "{$path_last}/{$entry}";
      // could do also other checks than just checking whether the entry is a file
       if (is_file($filepath) && filectime($filepath) > $latest_ctime) {
        $latest_ctime = filectime($filepath);
        $latest_filename = $entry;
     $array[$i] = $latest_filename ; // assign the names of the latest files in an   array.
        }
      }

    return $array;

      }//end loop
      }//end function
4

2 に答える 2

2

関数ファイルを混同しています。コードはfilesに入れられます。これらのファイル内で、関数を定義できます。

<?php
// This is inside last_file.php

function someFunction {
    // Do stuff.
}

someFunction()別のファイルで使用するには、最初にlast_file.phpを含めてから呼び出しますsomeFunction():

<?php
// This is inside some other file.

include 'last_file.php';

someFunction();
于 2012-11-10T20:05:52.610 に答える
1

関数に入れる場合は、そのように返す必要があります。

function func_name()
{
$path[0] = "/Applications/MAMP/htdocs/php_test/check";
$path[1] = "/Applications/MAMP/htdocs/php_test/check2";
$path[2] = "/Applications/MAMP/htdocs/php_test/check3";

for ($i=0; $i<=2; $i++){

$path_last = $path[$i]; // set the path
$latest_ctime = 0;
$latest_filename = '';    

 $d = dir($path_last);
while (false !== ($entry = $d->read())) {
  $filepath = "{$path_last}/{$entry}";
  if (is_file($filepath) && filectime($filepath) > $latest_ctime) {
$latest_ctime = filectime($filepath);
$latest_filename = $entry;
$array[$i] = $latest_filename ; // assign the names of the latest files in an array.
return $array;
}

次に、その関数を呼び出して変数に割り当てると、 $array の内容が取得されます

$contentsFromFunction = func_name();
于 2012-11-10T20:04:53.880 に答える