2010-05-17 10 views
0

Est-il possible que je peux chercher un tableau pour une valeur et retourner est la clé, j'ai essayé array_search() sans succès ... ci-dessous est un exemple de mon tableautableaux Recherche, array_search() question

[0] => Array 
    (
     [value] => 
     [text] => All Call Types 
    ) 

[1] => Array 
    (
     [value] => enquiry 
     [text] => Renovation Enquiry 
    ) 

[2] => Array 
    (
     [value] => msg 
     [text] => Message to Pass on 
    ) ... 

Mon but ultime est de convertir

value à text.

Voici ce que j'ai essayé:

$key = array_search($row['call_type'], $type_list); 
$call_type_name = $type_list[$key]['text']; 

Merci!

+0

que voulez-vous dire convertir "value to text"? – Artefacto

+1

Voici comment j'interprète: * Je veux chercher des instances de "valeur" et retourner "texte". * – JYelton

+0

Dans votre structure de tableau, «valeur» n'est pas la clé de «texte». Ils sont des éléments séparés. – webbiedave

Répondre

1

est ce que vous êtes après? trouver la position de l'occurrence d'une valeur spécifique?

function findKeyByField($arr, $name, $val){ 
$pos = 0; 
foreach ($arr as $subArr): 

    foreach ($subArr as $key => $value): 
     if($key == $name and $value == $val){ 
      return $pos; 
     } 
    endforeach; 

$pos++; 
endforeach; 
} 
+1

Je secoue chaque fois que je vois cette syntaxe: p – Artefacto

+0

quelle est la syntaxe, imbriquée foreach? Quoi de mieux, s'il vous plaît, j'apprends quelque chose de nouveau tous les jours, ce qui serait mieux. –

+0

vous basculez, en dépit de l'agitation qu'il a fait dans ma classe publique :) – Mikey1980

3

Vous pouvez écrire une courte fonction qui permet ceci:

function findInArray($array, $needle) 
{ 
    for ($i = 0; $i < sizeof($array); $i++) 
    { 
     if ($array[$i]['value'] == $needle) return $array[$i]['text']; 
    } 
} 

Exemple d'utilisation:

$call_type_name = findInArray($type_list, 'msg'); 
+0

Évidemment, cette fonction peut être mieux nommée 'getCallTypeName' ou quelque chose à votre goût. – JYelton

+0

Wow, je suis surpris que la fonction search_array() ne le fasse pas .. Je suis assez nouveau pour php - alors quel est son but alors? BTW, je vais essayer votre solution après le déjeuner. ;) – Mikey1980

+2

Depuis la page de manuel (http://php.net/manual/fr/function.array-search.php) 'array_search()' Recherche dans le tableau une valeur donnée et renvoie la clé correspondante en cas de succès. Dans votre exemple, vous disposez d'un tableau de tableaux (tableau multidimensionnel). 'array_search()' ne vérifie que la première dimension, et ne trouve pas un élément correspondant à '$ row ['call_type']' - à la place il trouve des tableaux. Si votre tableau a été construit différemment, comme un tableau associatif avec des chaînes comme type d'appel, et la clé elle-même utilisée pour la 'valeur', vous pouvez simplement retourner $ $ list_liste [$ key] 'et pas besoin de chercher. – JYelton

Questions connexes