Problème avec tableau associatif
Résolu
Debutant en webmastering
Messages postés
401
Date d'inscription
Statut
Membre
Dernière intervention
-
Debutant en webmastering Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
Debutant en webmastering Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je débute en PHP et mon professeur m'a conseillé de toujours optimiser, je dois donc créer une fonction qui va récupérer le title et générer un slug; pour le moment j'ai ceci :
le problème c'est que je n'arrive pas à lier cette fonction au simple remplissage de mon tableau (un format texte est attendu hors je voudrais que la fonction s'exécute)
j'ai essayé d'ajouter des quotes mais dans ce cas, et c'est logique
$arrSeries[$i][slug] prend 'function generate_slug($arrSeries[$i][title])' comme valeur et si je ne mets pas de quote j'ai l'erreur suivante qui s'affiche :
Parse error: syntax error, unexpected 'function' (T_FUNCTION), expecting ')'
voilà, si vous savez comment résoudre ce problème, je vous en serais reconnaissant
je débute en PHP et mon professeur m'a conseillé de toujours optimiser, je dois donc créer une fonction qui va récupérer le title et générer un slug; pour le moment j'ai ceci :
<?php
function generate_slug($string)
{
$slug = strlower($string);
$slug = str_replace(' ', '-', $slug);
return $slug;
}
$arrSeries = array();
$arrSeries[0]= array('title' => 'Dr Who', 'kind' =>'Aventure, Science fiction',
'date' => '2005', 'nationality' => 'Britannique', 'season' => '10', 'episodes' => '159',
'content' =>'Cette série relate les aventures du Docteur ...',
'slug' => "'"function generate_slug($arrSeries[$i][title])"'");
?>
le problème c'est que je n'arrive pas à lier cette fonction au simple remplissage de mon tableau (un format texte est attendu hors je voudrais que la fonction s'exécute)
j'ai essayé d'ajouter des quotes mais dans ce cas, et c'est logique
$arrSeries[$i][slug] prend 'function generate_slug($arrSeries[$i][title])' comme valeur et si je ne mets pas de quote j'ai l'erreur suivante qui s'affiche :
Parse error: syntax error, unexpected 'function' (T_FUNCTION), expecting ')'
voilà, si vous savez comment résoudre ce problème, je vous en serais reconnaissant
A voir également:
- Problème avec tableau associatif
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
1 réponse
Salut,
tu n'a pas concaténé avec le point à la ligne :
et tu n'a pas besoin de mettre function devant quand tu appel une fonction.
ensuite le mieux serait de faire comme ceci :
car quand tu construit ton tableau tu n'a pas encore accès à l'index title d'ou l'utilité de le faire après.
la fonction strlower n'existe pas, il faut utiliser strtolower, enfin l'index peut être remplacé par $i.
voili voilou.
tu n'a pas concaténé avec le point à la ligne :
'slug' => "'".generate_slug($arrSeries[$i][title])."'"
et tu n'a pas besoin de mettre function devant quand tu appel une fonction.
ensuite le mieux serait de faire comme ceci :
<?php function generate_slug($string) { $slug = strtolower($string); //c'est strtolower $slug = str_replace(' ', '-', $slug); return $slug; } $arrSeries = []; //correspond à array() //construction du tableau $arrSeries[0] = array( 'title' => 'Dr Who', 'kind' =>'Aventure, Science fiction', 'date' => '2005', 'nationality' => 'Britannique', 'season' => '10', 'episodes' => '159', 'content' =>'Cette série relate les aventures du Docteur ...' ); //l'index 0 peut être remplacé par $i $arrSeries[0]["slug"] = generate_slug($arrSeries[0]["title"]); //affichage de ton tableau echo "<pre>"; print_r($arrSeries); echo "</pre>"; die(); ?>
car quand tu construit ton tableau tu n'a pas encore accès à l'index title d'ou l'utilité de le faire après.
la fonction strlower n'existe pas, il faut utiliser strtolower, enfin l'index peut être remplacé par $i.
voili voilou.
Je ne peux pas mettre $arrSeries = array(); ? je dois obligatoirement mettre $arrSeries = [];?
Au fait, ton indentation de tableau avec chaque champ par ligne, je ne sais pas si c'est par convention ou non mais c'est carrément plus propre et lisible, merci.
Grâce à ta remarque je me rend compte que le title n'est en effet pas encore créé donc je ne peux y avoir accès, si je comprends bien, $arrSeries[0]["slug"] = generate_slug($arrSeries[0]["title"]); va rajouter un champ slug à mon tableau
Petite demande supplémentaire : mon prof m'a conseillé de mettre toutes mes fonctions dans un dossier lib sous le nom de "functions.php" le problème c'est que je ne sais faire que du link="stylesheet" et là bah ça n'est pas une feuille de style donc as-tu une idée de ce que je devrais mettre ? link="??"
par exemple aulieu de faire :
tu peux faire :
c'est juste plus rapide.
Oui c'est exactement ça, l'index n'étant pas encore crée tu ne peux pas l'utiliser,
en fait tu viens par la suite rajouter un index à ton tableau.
en php, pour inclure un fichier tu as plusieurs solutions :
ou juste
il y a aussi :
s'il est dans un dossier
s'il est dans un dossier au dessus genre :
tu peux faire
si il est plusieurs dossiers au dessus : etc ...
c'est valable pour toutes les fonctions (require,require_once,include,include_once).
ton fichier doit être inclus avant d'être utilisé.
remarque :
include_once et require_once permettent de ne charger qu'une seule fois un fichier.
(donc un fichier de template inclus plusieurs fois ne foit pas être en require once et une classe doit être chargée qu'une seule fois).
Bonne continuation ! ;)