在PHP中使用数组作为数组的键

Jon*_*ves 6 php arrays map

我需要在Array和Number之间创建一个关联; 由于PHP缺少Map类型,我正在尝试使用数组来实现这一点:

$rowNumberbyRow = array();
$rowNumberByRow[$rowData] = $rowNumber;
Run Code Online (Sandbox Code Playgroud)

但是,当我评估代码时,我收到以下错误:

Warning: Illegal offset type

需要注意的是,存储在array($rowData)中的数据没有任何"唯一"值,我可以将其用作$rowNumberByRow数组的键.

谢谢!

更新: 为了回答我的一些评论者,我正在尝试创建一个查找表,以便我的应用程序可以在O(1)时间内找到给定行的行号.

Chr*_*ial 7

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类.