Problème de Uninitialized string offset

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de Uninitialized string offset

le boulet

par thetiti » 15 avr. 2009, 21:46

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

Merci

par Ryle » 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 :)

Problème de Uninitialized string offset

par thetiti » 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

:)