我有一个多维数组,我在其中存储一个变量作为键和一个文件名列表。
以下是我正在使用的一些测试代码:
$file["dir1"] = "dir1";
$file["dir2"] = "dir2";
$fileDetails = new FileInformation();
$fileDetails->fileName = "file1";
$fileDetails->fieSize = 100;
$fileDetails->modifiedTime = "111";
$file["dir1"][0] = $fileDetails;
$fileDetails = new FileInformation();
$fileDetails->fileName = "file2";
$fileDetails->fieSize = 200;
$fileDetails->modifiedTime = "222";
$file["dir1"][1] = $fileDetails;
FileInformation类定义如下:
class FileInformation
{
var $fileName;
var $modifiedTime;
var $fieSize;
}
在$file["dir1"][0] = $fileDetails;
行上我从PHP收到以下错误:
Catchable fatal error: Object of class FileInformation could not be converted to string in
我不确定问题是什么,我确定我以前做过这件事或者至少做过类似事情。
我的想法是,如果我想从数组中取出fileName,那么我可以执行以下操作:
$file["dir1"][0]->fileName
至少这是我期待它发挥作用的方式。
感谢您提供的任何帮助
答案 0 :(得分:1)
简而言之,您必须确定要在$file["dir1"]
中准确存储的内容。
目前,您首先为其分配一个字符串,然后尝试修改该字符串的第一个字符(使用$file["dir1"][0]
语法,PHP允许您这样做)。这显然是错误的,但PHP只会在它看到时警告它(尝试将对象转换为字符串)。
您可能想要做的是从一开始就使用数组:
$file["dir1"]['dirname'] = "dir1";
...
$file["dir1"][0] = $fileDetails;
...或者,甚至更好,
$file["dir1"]['dirname'] = "dir1";
$file["dir1"]['details'][] = $fileDetails; // for the first file
// ...
$file["dir1"]['details'][] = $fileDetails; // for the second file and so on.
......没有混合'正常'和'联想'处于同一水平(这是可能的,但令人困惑)。
答案 1 :(得分:1)
您将字符串分配给$file["dir1"]
。调用$file["dir1"][0]
会为您提供该字符串的第一个位置,这也是一个字符串(在C中没有像
$file["dir1"] = [];
$file["dir1"][0] = $fileDetails
$file["dir1"][0]->fileName;
答案 2 :(得分:1)
您不应再使用$var
了。快速阅读:
http://php.net/manual/en/language.oop5.visibility.php
无论如何,将文件['dir']初始化为数组。
class FileInformation
{
public $fileName;
public $modifiedTime;
public $fieSize;
}
$file["dir1"] = array();
$file["dir2"] = array();
$fileDetails = new FileInformation();
$fileDetails->fileName = "file1";
$fileDetails->fieSize = 100;
$fileDetails->modifiedTime = "111";
$file["dir1"][0] = $fileDetails;
$fileDetails = new FileInformation();
$fileDetails->fileName = "file2";
$fileDetails->fieSize = 200;
$fileDetails->modifiedTime = "222";
$file["dir2"][1] = $fileDetails;
echo '<pre>';
print_r($file);
如果要访问数组中该对象的各个属性:
echo $file['dir1'][0]->fileName; // file1