Le code suivant renvoie would
, où nous attendons la sortie 12/5/10
. La raison est array_search
ne fonctionne que sur les tableaux associatifs et explode
renvoie un tableau sans clé, donc $k
est false
et $k+1
est 1
.Transformation d'un tableau sans clé en tableau associatif
$s = 'We would like to book a double room form 12/5/10 for three nights.';
$s_arr = explode(' ', $s);
$k = array_search('from', $s_arr);
$from = $s_arr[$k+1];
echo $from;
Nous pouvons vérifier cela en utilisant une définition littérale comme celui-ci
$s_arr = array(
0 => 'We',
1 => 'would',
2 => 'like',
3 => 'to',
4 => 'book',
5 => 'a',
6 => 'double',
7 => 'room',
8 => 'form',
9 => '12/5/10',
10=> 'for',
11=> 'three',
12=> 'nights.');
$k = array_search('from', $s_arr);
$from = $s_arr[$k+1];
echo $from;
Cette fois la valeur correcte est sur ce qui est 12/5/10
.
Existe-t-il un moyen de transformer un tableau sans clé en un tableau associatif?
Juste essayé le deuxième bloc de code, il échoue aussi! Qu'est-ce que je rate? –
Pourquoi faites-vous cela du tout? Il semble que le but de cette fonction est d'extraire la date. Si c'est le cas, il serait logique d'utiliser une expression régulière. preg_match est beaucoup plus rapide pour ces choses que votre tableau exploser roundtrip et array_search. – mario
@mario - ce sont les premières étapes pour implémenter un répondeur intelligent. Beaucoup de choses vont changer, mais pour l'instant exploser + la recherche ferait l'affaire. –