如何在php array_search()中搜索多值数组中的键?

时间:2014-01-09 08:16:50

标签: php arrays

在php数组搜索中进行数组搜索

我需要搜索键值为蓝色

但两个值的关键为紫色,蓝色

当我尝试以下操作时,它什么都没有显示

$array = array(1 => 'orange', 2 => 'yellow', 3 => 'green', 4 => 'purple','blue');

$key = array_search('blue', $array);  

echo $key;

如何找到蓝色键或我是否需要更改$array

2 个答案:

答案 0 :(得分:1)

首先,您作为示例显示的程序将输出5作为“蓝色”的键值,正如其他人已经指出的那样。

现在,如果我理解你可能想要的东西,那就是让同一个索引引用两个元素的方法。

在这种情况下,您可以简单地交换键和值,如下所示:

$array = array(
    'orange' => 1,
    'yellow' => 2,
    'green'  => 3,
    'purple' => 4,
    'blue'   => 4);

echo $array['purple']; // 4
echo $array['blue'  ]; // 4

答案 1 :(得分:0)

在这种情况下,最大用户分配的密钥为 4 ,即紫色,因此最终为 5 为蓝色...并且您正在使用的代码将返回正确的输出 5

如果您对阵列进行了print_r(),您将会明白这一点..请参阅此处

Array
(
    [1] => orange
    [2] => yellow
    [3] => green
    [4] => purple
    [5] => blue
)

<强> EDIT :

  当我搜索紫色或蓝色时,我需要找到密钥为4!如何   这样做

您不能在数组中使用相同的键或使用两个不同的值!

而是像这样修改你的数组......

<?php
$array = array(1 => 'orange', 2 => 'yellow', 3 => 'green', 4 => 'purple,blue'); //Adding purple and blue seperated by comma...

foreach($array as $k=>$v)
  {
   if(strpos($v,'purple')!==false)
    {
     echo $k;// "prints" 4 if you pass purple or blue !
     break;
    }
  }
相关问题