Pergunta

Eu tenho essa matriz

Array
(
  [0] => a
  [1] => b
  [2] => c
  [3] => d
)

Como posso obter a chave de um elemento? (Por exemplo, a = 0, c = 2)

Foi útil?

Solução

<?php
$trans = array("a" => 1, "b" => 1, "c" => 2);
$trans = array_flip($trans);
print_r($trans);
?>

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

Usando array_search http://php.net/manual/en/function.array-search. php

<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array);   // $key = 1;
?>

Outras dicas

Use array_search ()

Pesquisas da matriz para um dado valor e retorna a tecla correspondente, se bem sucedido.

Exemplo # 1 array_search () exemplo

<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array);   // $key = 1;
?>

Se você deseja pesquisar, ver array_search ( http: // www.php.net/manual/en/function.array-search.php )

Se você é iteração sobre ele, você pode usar vários sintaxe:

foreach ($a as $key => $value) { ... }
foreach (array_keys($a) as $key) { $value = $a[$key]; ... }

Se você quiser apenas as chaves usar array_keys .

Se você quiser inverter a matriz como você mostrar no seu exemplo, o uso array_flip

array_keys :

array_keys($arr, 'a');         # 0
array_keys($arr, 'c');         # 2

Eu, pessoalmente, como @ solução de SilentGhost mas você iria sofrer uma penalidade de velocidade, se você está fazendo mais do que uma pesquisa, em que ponto você iria querer o seguinte:

// assume you know you want the value for key 'c'
$array = ('a','b','c','d');
$keys = array_flip($array);
return $keys['c'];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top