2010-02-16 16 views
9

Klucz tablicy asocjacyjnej jest generowany dynamicznie. Jak uzyskać "klucz" takiej tablicy?Uzyskiwanie klucza jedynego elementu w tablicy PHP

$arr = array ('dynamic_key' => 'Value'); 

Zdaję sobie sprawę, że jest możliwe, aby uzyskać do niego dostęp za pomocą pętli foreach jak ten:

foreach ($arr as $key => $val) echo "Key value is $key"; 

Wiem jednak, że ta tablica będzie mieć tylko jeden klucz i chcą uniknąć pętli foreach . Czy możliwy jest dostęp do wartości tego elementu w jakikolwiek inny sposób? Lub zdobądź nazwę klucza?

Odpowiedz

13

edit: http://php.net/each mówi:

każdy

ostrzegawcze Ta funkcja została DEPRECATED od PHP 7.2.0. Opieranie się na tej funkcji jest wysoce odradzane.


Korzystanie key() jest w porządku.
Jeśli zamierzasz pobrać tę wartość, możesz również użyć each() i list().

$arr = array ('dynamic_key' => 'Value'); 
list($key, $value) = each($arr); 
echo $key, ' -> ', $value, "\n"; 

drukuje dynamic_key -> Value

+0

mały błąd. Ostatni wiersz powinien brzmieć: 'echo $ key. "->". Wartość $. "\ n"; 'zamiast' echo $ key, '->', $ value, "\ n"; '(dots, not comas). – PolGraphic

+4

PolGraphic: "Ostatnia linia powinna być" - nie, nie powinna. Nie trzeba tam robić konkatenacji. Możesz przekazać praktycznie nieograniczoną liczbę argumentów oddzielonych przecinkami, aby wywołać echo. – VolkerK

+1

'each()' jest przestarzałe w nowszych wersjach PHP, więc ... Nie należy polegać na tym, że działa w przyszłości. – Offlein

5
$keys = array_keys($arr); 
echo $keys[0]; 

Lub użyj wartości array_values().

0

Można użyć array_shift(array_keys($arr)) (z array_values do uzyskania wartości), ale nadal wewnętrznie wykonuje pętlę.

0

A co z funkcjami array_keys()?

To nie zwraca tablicę chociaż ...

0

masz na myśli, że masz wartość wejścia i chcą dostać klucz?

array_search ($value, $array) 

Zwraca klucz do igły czy jest znaleziony w tablicy, FALSE w przeciwnym wypadku.

Jeśli igła zostanie znaleziona w stogu siana więcej niż niż jeden raz, zwrócony zostanie pierwszy pasujący klucz: . Aby zwrócić klucze dla wszystkich pasujących wartości, użyj parametru array_keys() z opcjonalnym parametrem search_value o wartości .

więcej szczegółów: http://php.net/manual/en/function.array-search.php

2

Najkrótsza, najprostszy i najbardziej niezależny rozwiązaniem jest:

$key = key($arr); 
$value = reset($arr); 
Powiązane problemy