簡體   English   中英

SplObjectStorage僅按實例映射

[英]SplObjectStorage only maps by instances

我的問題是我想按對象相等性(==)而不是唯一實例進行映射。 換句話說,將其重構為不會引發錯誤並返回映射的值:

$var1 = (object) [1,2,10];
$var2 = (object) [1,2,10];
$objmap = new SplObjectStorage();
$objmap[$var1] = "mapped value here";
echo $objmap[$var2];

編輯:此外,如果最終我需要遍歷SplObjectStorage對象的鍵以平等地獲取,我想知道一種僅散列對象/數組並簡單地映射到哈希的好方法。

我將為對象內容實現哈希函數; 像這樣簡單的事情:

function getHash($obj)
{
    return md5(serialize($obj));
}

$objmap = array();
$objmap[getHash($var1)] = "mapped value here";
echo $objmap[getHash($var2)];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM