2010-02-01 4 views
5

J'essaie de trouver des valeurs dans un tableau. Ce tableau commence toujours par 0. malheureusement array_search commence à chercher avec l'élément de tableau 1. Donc le premier élément est toujours négligé.Problème dans la recherche de tableaux

Comment est-ce que je pourrais "décaler" ce tableau pour commencer avec 1, ou faire la recherche de tableau commencer par 0? Le tableau provient d'un service Web XML, je ne peux donc pas modifier les résultats.

+0

Peut-être que vous devriez montrer votre code et comment vous effectuez une recherche parce que, de toute évidence 'array_search' fonctionne correctement Mais peut-être que ce n'est pas la bonne fonction pour votre but. –

Répondre

2

Voir le manuel, il peut vous aider: http://www.php.net/manual/en/function.array-search.php

Si ce que vous essayez de faire est d'utiliser la clé augmenter par un, vous pouvez le faire:

function my_array_search($needle, $haystack, $strict=false) { 
    $key = array_search($needle, $haystack, $strict); 
    if (is_integer($key)) $key++; 
    return $key; 
} 
my_array_search($xml_service_array); 
+0

hmm thanx mais pouvez-vous expliquer plus parce que j'ai utilisé Zero mais ne fonctionne pas. array_search() commence-t-il à la touche 0? –

+1

Assurez-vous que la clé d'index est zéro, regardez ce que meagar a dit comme exemple – Ghazanfari

+0

Cet exemple résoudra techniquement votre problème, mais la clé résultante pointera 1 passé l'élément que vous voulez trouver. Vous trouverez toujours l'élément 0 cependant. Ainsi, la clé retournée ne vous dira pas réellement où trouver les données. – meagar

13

array_search ne fait pas commencer la recherche à l'index 1. Essayez cet exemple:

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

Quel que soit le problème que je s avec votre code, ce n'est pas que son premier élément est l'indice 0.

Il est plus probable que vous utilisiez == au lieu de === pour vérifier la valeur de retour. Si array_search renvoie 0, ce qui indique le premier élément, le code suivant ne fonctionnera pas:

// doesn't work when element 0 is matched! 
if (false == array_search(...)) { ... } 

Au lieu de cela, vous doit contrôle à l'aide ===, qui compare la valeur et tapez

// works, even when element 0 is matched 
if (false === array_search(...)) { ... } 
+0

wow thanx mon pote qui était génial, je pense que je trouve le problème. –

+0

A ce qu'il est dit dans cette grande boîte rouge ** avertissement ** sur ce site: http://php.net/manual/fr/fonction.array-search.php Lire des pages de manuel aide parfois vraiment! –

Questions connexes