【问题标题】:Using empty string as key in associative array使用空字符串作为关联数组中的键
【发布时间】:2018-08-10 01:37:53
【问题描述】:

我需要根据一些值选择和分组一些项目,使用关联多维数组很容易:

$Groups = array(
    "Value1" = array("Item1", "Item3"),
    "Value2" = array("Item2", "Item4")
    );

但有些项目没有价值,所以我的数组会是这样的:

$Groups = array(
    "Value1" = array("Item1", "Item3"),
    "Value2" = array("Item2", "Item4")
    "" = array("Item5", "Item6")
    );

我已经对其进行了测试(也在 foreach 循环中),一切似乎都可以正常工作,但 我对 php 还是很陌生,我担心使用空键可能会给我带来意外问题。

空键使用关联数组有什么问题吗?
这是一种不好的做法吗?
如果是这样,我怎样才能达到我的目标?

【问题讨论】:

  • 你从哪里得到数组?你用它做什么?它的好坏取决于用例。
  • how could I reach my goal? 你的目标是什么? :)
  • @Litty 我的意思是相当于第二个数组。反正我有答案
  • 'Some items',意味着您可能有多个空字符串作为键,这当然会导致破坏。也许您应该为这些生成唯一的 ID。
  • 在定义数组时,还应该使用双箭头运算符=> 来表示键值对。

标签: php associative-array array-key


【解决方案1】:

您可以使用空字符串作为键,但要小心,因为null 值将被转换为空字符串:

<?php

$a = ['' => 1];

echo $a[''];
// prints 1

echo $a[null];
// also prints 1

我认为,最好声明一些“无值”常量(实际上是有值的)并将其用作数组键:

<?php

define('NO_VALUE_KEY', 'the_key_without_value');

$a = [NO_VALUE_KEY => 1];

【讨论】:

    【解决方案2】:

    没有空键这样的东西。密钥可以是空字符串,但您仍然可以随时通过 $groups[""] 访问它。

    关联数组的有用之处在于关联,因此将空字符串作为数组键是否有意义取决于您如何将该键与值关联。

    【讨论】:

    • 是的,它不是空的,而是空字符串!我会更新问题标题
    • @LightnessRacesinOrbit 一个空字符串仍然可以被引用。你不能做$array = [ =&gt; "value" ]$array = [ "" =&gt; "value"] 很好。
    • @Devon:是的,我误读了genespos 的评论(主要是因为前一个例子意义不大,甚至没有进入我的脑海!)
    猜你喜欢
    • 2020-02-14
    • 2016-07-21
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    相关资源
    最近更新 更多