在每条记录中构建一个包含 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"。
我正在尝试在每条记录(或项目)中构建一个包含多个字段的简单数组,
例如 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"。