Problème de Uninitialized string offset

Petit nouveau ! | 2 Messages

15 avr. 2009, 07:55

Bonjour,

j'ai un script d'analyse d'url qui fonctionne très bien et pour une question d'évolution de mon site j'ai décidé de faire une fonction à partir de ce script, mais j'ai 2 erreurs de Uninitialized string offset :2 et Uninitialized string offset : 1

voici la function
<?php 
function rewriteType1($urlDossier){
	$urlDossierArray = split('[/-]', $urlDossier);
	$zoneDossier = $urlDossierArray[1];
	$idDossier = $urlDossierArray[2];

	$idPageArray = split('[_.]', $urlDossier);
	return $idPage = $idPageArray[1];
	if ( !is_numeric ($idPage)) {
		$idPage = "";
	} else {
		$idPage;
	}
	
	return array ($zoneDossier, $idDossier, $idPage);
}
?>
et voici la page qui appelle cette fonction :
<?php 
$urlPage = $_SERVER["DOCUMENT_ROOT"]."/";
$urlDossier = $_SERVER["REQUEST_URI"];

include($urlPage."commun/function.php");
list ($zoneDossier, $idDossier, $idPage) = rewriteType1($urlDossier);

echo $urlDossier;
echo "<br/>";
echo $zoneDossier;
echo "<br/>";
echo $idDossier;
echo "<br/>";
echo $idPage;
echo "<br/>";
echo $urlPage;
?>
et voici ce que j'ai en sortie sur ma page HTML quand j'apelle la page : http://travaux.dev/edito/2805-le-rew...la-page_2.html

Code : Tout sélectionner

Notice: Uninitialized string offset: 2 in C:\wamp\www\travaux\edito\index.php on line 6 Notice: Uninitialized string offset: 1 in C:\wamp\www\travaux\edito\index.php on line 6 /edito/2805-le-rewriting-de-la-page_3.html 3 C:/wamp/www/travaux//
Par contre si j'appelle la page : http://travaux.dev/edito/2805-le-rew...e-la-page.html j'ai en sortie :

Code : Tout sélectionner

/edito/2805-le-rewriting-de-la-page.html edito 2805 C:/wamp/www/travaux//

Merci pour votre aide

:)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 avr. 2009, 10:17

En plein milieu de te fonction, sans aucune condition, tu as :
return $idPage = $idPageArray[1]; 
Ceci implique que php va stocker la valeur de $idPageArray[1] dans la variable $idPage (opérateur d'affectation "="), mais surtout, retourner cette valeur, et par conséquent arrêter le traitement de la fonction...

Le reste du code sensé te renvoyer un tableau est donc ignoré. Résultat, quand tu demandes avec list de récupérer le 2ème et 3ème élément du tableau retourné alors qu'il n'a reçu qu'une seule variable, php te colle un avertissement :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 2 Messages

15 avr. 2009, 21:46

oups en effet.... à force d'avoir l'oeil dessus j'avais pas vu

Merci