【问题标题】:PHP array as array key [closed]PHP数组作为数组键[关闭]
【发布时间】:2012-09-05 22:54:30
【问题描述】:

在 php 中是否可以将数组也设为数组键?

例子:

array(
   array('sample', 'abc') => 'sample value'
);

【问题讨论】:

  • 不,这是不可能的。数组键必须是整数或字符串。这在php.net/manual/en/language.types.array.php 中有解释
  • 理论上,您可以将serialize() 数组转换为字符串以用作数组键,但我不明白为什么您的设计需要这样做,我实际上并不提倡这样做。它会充满问题,例如每次需要更改时都必须重新序列化。
  • 不仅不可能,而且我什至看不到它的实际用途 - 据我所知,所有编程语言(支持它们)中的索引和关联键都是标量值
  • PHP 数组键只能是 integerkeys..
  • @IvanHušnjak 复合键哈希映射将是它的一种实际用途。不过可以使用SplObjectStorage

标签: php arrays


【解决方案1】:

不,如果您阅读了manual

PHP 中的数组实际上是一个有序映射。映射是将值与键相关联的类型。这种类型针对几种不同的用途进行了优化;它可以被视为数组、列表(向量)、哈希表(映射的实现)、字典、集合、堆栈、队列等等。由于数组值可以是其他数组,所以树和多维数组也是可以的。

还有:

键可以是整数字符串。该值可以是任何类型。

【讨论】:

  • 你是对的..我刚刚意识到你的回答......谢谢..继续......
【解决方案2】:

这是不可能的 - 数组键必须 be strings or integers

你可以做的是使用serialize:

$myArr = array( serialize(array('sample', 'abc')) => 'sample value');

这将与以下内容相同:

$myArr = array( 'a:2:{i:0;s:6:"sample";i:1;s:3:"abc";}' => 'sample value');

并且可以像这样访问:

echo $myArr[serialize(array('sample', 'abc'))];

但请注意,作为数组项唯一标识符的序列化字符串显然相当复杂,几乎不可能手动输入。

【讨论】:

  • 这太吓人了……
  • 是的..我认为可怕但高效..谢谢..
  • 效率不足以成为公认的答案? ;)
【解决方案3】:

PHP 数组可以包含整数和字符串键,而 PHP 不区分索引数组和关联数组。 找php手册Php Manual

【讨论】:

    【解决方案4】:

    怎么了

    array(
        'sample value' => array('sample', 'abc')
    );
    

    你可以这样做

    foreach($array as $string => $child){
    ...
    }
    

    并将$child 用于任何目的

    【讨论】:

      猜你喜欢
      • 2013-01-05
      • 1970-01-01
      • 2015-05-18
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-24
      • 1970-01-01
      相关资源
      最近更新 更多