2010-02-22 20 views
1

J'ai un tableau de produits de widgets.php supprimer un élément avec une période du tableau

Certains widgets ont le symbole de la période réservée dans leurs noms.

Le problème se produit lorsque PHP rencontre la période, le reste du nom du widget est ignoré. Comment pourrais-je lire le widget sous la forme d'une chaîne littérale afin que le symbole de la période n'interfère pas? Je pourrais remplacer la période par une lettre d'espace réservé afin que ce ne soit pas un caractère réservé, mais je préférerais ne pas le faire.

Merci

+0

Voulez-vous dire 'unset ($ products [$ widget]);'? –

+0

oui, désolé pour la faute de frappe. – payling

+0

Je suppose que le widget $ ressemble à ceci: "some.widget.name"? – Matt

Répondre

0

j'ai fait quelques hypothèses qui ont eu tort. Le nom du widget contient également des symboles en forme de livre dont j'ai manqué de mentionner parce que je ne savais pas que les # symboles affectaient le code comme ils le font. Mais comme il s'avère que le symbole de la livre a causé le problème après tout, mais pas lors de l'utilisation de la commande unset. J'ai passé le nom du widget via l'URL en utilisant $ _GET ['']. Apparemment, la réception n'aime pas # et supprime tout après les symboles #.

Voici une explication rapide. Soo ... disons que je passais le nom du widget "Crank # x.55". Si j'ai répercuté la variable $ _GET, vous verrez "crank" et le "# x.55" restant est enlevé. Quand j'ai regardé dans l'url, il a montré "crank # x.55" (le nom complet du widget) qui m'a amené à croire qu'il a été envoyé à la var $ _GET correctement. Je pensais que le symbole de la période (concatination) faisait quelque chose de visqueux quand je ne faisais rien, c'est pourquoi j'ai créé la question originale. (Je sais que j'ai besoin d'inclure plus de faits pour les questions futures) < - processus d'apprentissage. J'ai résolu le problème en remplaçant simplement les symboles dièse par des symboles @ et une fois que les données ont été validées, convertissez le symbole @ en livre en utilisant preg_replace. Similaire à la réponse de pixeline juste adapté un peu pour mon but.

Merci

+0

Veuillez mettre à jour la question afin que les autres utilisateurs recherchant SO avec un problème similaire trouvent cette solution. –

+1

Stackoverflow dit de ne pas changer la question originale.La question initiale est ce que je pensais être faux, la réponse de fond est la façon dont il a été résolu. – payling

3

utiliser une valeur normalisée de leur nom comme clé, et le vrai nom du widget en tant que valeur.

Exemple:

function slug($str) 
{ 
    $str = strtolower(trim($str)); 
    $str = preg_replace('/[^a-z0-9-]/', '-', $str); 
    $str = preg_replace('/-.+/', "-", $str); 
    return $str; 
} 

$products[slug($widget)] = $widget; 
+0

Ceci est un travail valide autour. J'utilise déjà le champ de valeur pour la quantité mais Oui, je pourrais faire un tableau bidimensionnel. Je voudrais savoir si le problème est résolu d'une façon ou d'une autre en le lisant comme chaîne de caractères avant de chercher des alternatives. Merci pour la contribution cependant, chaque bit aide! – payling