【问题标题】:What is the reverse of (object) array (key => value) in PHP?PHP中(对象)数组(键=>值)的反面是什么?
【发布时间】:2012-04-10 00:43:00
【问题描述】:

当你知道它在 PHP 中的值时,有没有一种快速的方法来返回一个键?

例如,如果您有:

$Numbers = (object) array ( "0" => 0, "1" => 1, "2" => 3, "3" => 7, "4" => 13 );

有没有办法返回:

echo re(13);   // Print 4 

我能想到的一种方法是专门为此构建一个函数,但我想知道是否有更好的方法。

【问题讨论】:

  • 如果要使用您最喜欢的搜索引擎来找到这个问题的答案,您会花费一半的精力来创建这个问题......可怜!!
  • @ManseUK:Stack Overflow 不会阻​​止可以通过 Google 回答的问题。从这个网站复制,是的,但不是谷歌可以回答的问题。您的观点不代表社区。​​span>
  • 抱歉,我不知道要搜索什么,因为我不知道有一种方法可以只返回对象数组的键或值。谢谢你的回答。

标签: php arrays oop object


【解决方案1】:

http://php.net/array_search

echo array_search($valToSearch, (array) $Numbers);

【讨论】:

    【解决方案2】:

    正如其他几个人所提到的,array_search 会按照您的要求进行操作。但是,如果您想要一个包含该值的所有键的数组,而不仅仅是第一个,您可以使用array_keys

    print_r(array_keys($Numbers, 13)); // print Array ( [0] => 4 )
    

    http://www.php.net/manual/en/function.array-keys.php

    【讨论】:

    • 是的,我知道钥匙在这里,否则我会得到 NULL,我猜。
    【解决方案3】:

    如果你确定你有唯一的键:

    $flipped = array_flip($array);
    $key = $flipped[$knownValue];
    return $key;
    

    否则,使用array_search:

    return array_search($knownValue, $array);
    

    第一种方法可能如果您进行多次查找并具有唯一值会更好。第二种方法在有多个值的情况下返回第一个匹配的键。

    【讨论】:

    • 谢谢,很高兴知道有翻转功能。我想,所有的数字都会变成字符串。例如。 '4' => 13 将变为 '13' => '4' ...
    【解决方案4】:

    array_search:

    $key = array_search(13, (array) $Numbers);
    

    http://ua2.php.net/array_search

    【讨论】:

      【解决方案5】:

      【讨论】:

      • 为您的链接提供一些上下文会更有帮助。
      猜你喜欢
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多