我需要在Array和Number之间创建一个关联; 由于PHP缺少Map类型,我正在尝试使用数组来实现这一点:
$rowNumberbyRow = array();
$rowNumberByRow[$rowData] = $rowNumber;
Run Code Online (Sandbox Code Playgroud)
但是,当我评估代码时,我收到以下错误:
Warning: Illegal offset type
需要注意的是,存储在array($rowData)中的数据没有任何"唯一"值,我可以将其用作$rowNumberByRow数组的键.
谢谢!
更新: 为了回答我的一些评论者,我正在尝试创建一个查找表,以便我的应用程序可以在O(1)时间内找到给定行的行号.
PHP确实有一个map类:它叫做SplObjectStorage.可以使用与通用数组完全相同的语法访问它(请参阅参考上的示例#2 ).
但要使用该类,您将不得不使用ArrayObject类而不是数组.它的处理方式与数组完全相同,您可以从数组构造实例(例如$arrayObject = new ArrayObject($array)).
如果您不想使用这些类,您还可以创建一个为索引创建唯一哈希字符串的函数.例如:
function myHash($array){
return implode('|',$array);
}
$rowNumberByRow[myHash($array)] = $rowNumber;
Run Code Online (Sandbox Code Playgroud)
您当然必须确保您的哈希值确实是唯一的,我强烈建议您使用SplObjectStorage,并且可能会阅读更多关于PHP的SPL类.
| 归档时间: |
|
| 查看次数: |
4154 次 |
| 最近记录: |