©
이 문서에서는 PHP 중국어 웹사이트 매뉴얼 풀어 주다
(PHP 5 >= 5.3.0)
SplObjectStorage::offsetGet — Returns the data associated with an object
$object
)Returns the data associated with an object in the storage.
object
The object to look for.
The data previously associated with the object in the storage.
Throws UnexpectedValueException when object
could not be found.
Example #1 SplObjectStorage::offsetGet() example
<?php
$s = new SplObjectStorage ;
$o1 = new StdClass ;
$o2 = new StdClass ;
$s [ $o1 ] = "hello" ;
$s -> attach ( $o2 );
var_dump ( $s -> offsetGet ( $o1 )); // Similar to $s[$o1]
var_dump ( $s -> offsetGet ( $o2 )); // Similar to $s[$o2]
?>
以上例程的输出类似于:
string(5) "hello" NULL
[#1] kontrollfreak+php at gmail dot com [2015-07-10 13:47:14]
SplObjectStorage::offsetGet() can become EXTREMELY slow depending on the associated data (PHP 5.6).
<?php
// SplObjectStorage
$object = new stdClass;
$test = new SplObjectStorage;
$test->attach($object, str_repeat("\0", 1024*1024));
$start = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
$test->offsetGet($object);
}
var_dump(microtime(true) - $start); // 76 seconds!
// Array + spl_object_hash()
$object = new stdClass;
$test = [];
$test[spl_object_hash($object)] = str_repeat("\0", 1024*1024);
$start = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
$temp = $test[spl_object_hash($object)];
}
var_dump(microtime(true) - $start); // 0.3 seconds