从空值创建默认对象

时间:2014-08-13 11:26:03

标签: php joomla xampp

在XAMPP上使用最新版本我在joomla上面临以下警告:

Warning: Creating default object from empty value in F:\xampp\htdocs\modules\mod_random_image_with_fancy_zoom\tmpl\default.php on line 26

通常这是通过新变量的显式定义修复的,但是这次我找不到要修改的内容来修复此警告?

$pickoneArray = array();
$pickone = rand(0, count($images)-1);
print_r($pickoneArray);
print_r($images[$pickone]);
$pickoneArray[0]->name = $images[$pickone]->name; //this is line 26
$pickoneArray[0]->folder = $images[$pickone]->folder . "/";

这是print_r的输出:

stdClass Object
(
    [name] => pic001.jpg
    [folder] => images\images\pic_of_the_day\
)

你可以看到$ pickoneArray没有任何东西可以显示。

1 个答案:

答案 0 :(得分:2)

$pickoneArray[0]不算什么,因此$pickoneArray[0]->name = ... 会创建默认对象
你应该明确地创建它:

$pickoneArray[0]       = new stdClass;
$pickoneArray[0]->name = ...

但是,由于您只是将对象属性重新分配给另一个对象中的相同属性,因此这将更有意义:

$pickoneArray[0] = $images[$pickone];

事实上,这可以归结为:

$pickoneArray = array($images[array_rand($images)]);

但在这里我会问你为什么需要一个阵列。为什么不简单:

$pickone = $images[array_rand($images)];