在每条记录中构建一个包含 2 或 3 个字段的数组

Build an array of 2 or 3 fields in each record

我正在尝试在每条记录(或项目)中构建一个包含多个字段的简单数组, 例如 table of (name,sex,id, etc) or (surname, name, phone-no) etc
在这种情况下,我想将每个条目的文件名、文件大小(以及可选的文件日期等)存储在一个目录中。
每条记录中的一个字段很容易。但是如何在数组中存储多个字段以供以后访问?

我目前拥有的:

$dir= "xxxxen/";        <!-- Select Language folder  -->     
$myDirectory = opendir($dir);     
$dirarray = array();     
// get each entry     
while($entryName = readdir($myDirectory)) {      
   if ($entryName != "." && $entryName != "..") {    
      $entrySize = filesize($dir  .$entryName);      
      echo $entryName . ' --- ' . $entrySize . ' bytes<br/>';     
      $dirArray[] = $entryName;  ====AND???? ====     
   }     
}     
// close directory

现在,如何将文件大小保存在此数组中?
希望我只是在上面的 "AND???" 中遗漏了一些语法。
也许我使用了错误的搜索参数,但很少有这样的例子(实际上 none),包括搜索 php.net.

你应该尝试使用关联数组; 像这样

$dirArray[] = array("name" => $entryName, "entrySize" => $entrySize);

之后您可以通过以下方式访问该值:

echo $dirArray[0]["name"];

希望对您有所帮助。

在你的 while 循环中使用 array_push,像这样

$dir= "xxxxen/";        
$myDirectory = opendir($dir);     
$dirarray = array();     
// get each entry     
while($entryName = readdir($myDirectory)) {      
   if ($entryName != "." && $entryName != ".."):
      array_push($dirarray,array(
          "entrySize"=>filesize($dir . $entryName),
          "entryName"=>$entryName . ' --- ' . $entrySize . ' bytes'
      ));
   endif;
}   

我可能会建议 re-write...

如果您使用chdir()将目标文件夹指定为当前工作目录,您可以调用glob()而不包含路径。 glob() 的输出数组将不包括 ...。这使得代码段非常简洁。

代码:

chdir("xxxxen");
foreach (glob("*") as $file) {
    $result[] = ['filename' => $file, 'filesize' => filesize($file)];
}     
var_export($result);

在我的 dummy/test 目录中,这是输出:

array (
    0 => array ( 'filename' => 'ex1_1.png', 'filesize' => 165083, ),
    1 => array ( 'filename' => 'ex1_2.png', 'filesize' => 3596235, ),
    2 => array ( 'filename' => 'ex2_1.png', 'filesize' => 1098743, )
)

所以,很明显,您可以迭代此 multi-dimensional 数组来访问您需要的内容 "down script"。