0

非常に奇妙な動作をしているオブジェクトの配列があります。foreach ループ内に配置すると、メソッドを実行できます。

foreach ($options['image']->images as &$image) {
    var_dump($options['image']->images[0]->src('small'));
}

戻り値:

string 'files/small/test.jpg' (length=20)

ただし、foreach ループの外側の同じ var_dump:

var_dump($options['image']->images[0]->src('small'));
foreach ($options['image']->images as &$image) {
    var_dump($options['image']->images[0]->src('small'));
}

戻り値

Error: Call to a member function src() on a non-object

興味深いいくつかのテストを実行しました。

**Get Class**
echo get_class($options['image']->images[0]);
foreach ($options['image']->images as &$image) {
    var_dump($options['image']->images[0]->src('small'));
}

戻り値:

Image

と:

**Get Class Methods**
var_dump(
    get_class_methods($options['image']->images[0])
);
foreach ($options['image']->images as &$image) {
    var_dump($options['image']->images[0]->src('small'));
}

戻り値:

array
  0 => string '__construct' (length=11)
  1 => string 'src' (length=3)
  2 => string 'makeThumb' (length=9)
  ...

foreach ブロックの外側のオブジェクトに問題がある理由がわかりません。$options 配列自体が foreach ループに由来することに注意してください。

foreach ($option_goups as $options)
4

0 に答える 0