je récupere depuis une interface de configuration les éléments suivants a:23:{s:6:"nombre";s:1:"3";s:6:"login1";s:5:"18321";s:9:"password1";s:8:"********";s:11:"url_remote1";s:27:"https://owncloud.zaclys.com";s:17:"directory_remote1";s:4:"tmp1";s:16:"activer_synchro1";s:2:"on";s:25:"activer_effacement_local1";s:2:"on";s:14:"content_album1";s:1:"1";s:6:"login2";s:5:"user2";s:9:"password2";s:5:"pass2";s:11:"url_remote2";s:15:"https://cloud2/";s:17:"directory_remote2";s:4:"tmp2";s:16:"activer_synchro2";s:0:"";s:25:"activer_effacement_local2";s:0:"";s:14:"content_album2";s:0:"";s:6:"login3";s:5:"user3";s:9:"password3";s:5:"pass3";s:11:"url_remote3";s:15:"https://cloud3/";s:17:"directory_remote3";s:4:"tmp3";s:16:"activer_synchro3";s:2:"on";s:25:"activer_effacement_local3";s:2:"on";s:14:"content_album3";s:1:"3";s:11:"check_album";s:0:"";
je veux créer un tableau des datas login,passwd,url,remote,activer_synchro,activer_effacement,content_album
je recois 2 informations n’appartenant pas à mon tableau « nombre » et « check_album »
|ou est un filtre donc il faut mettre ses arguments entre accolades {} ce qui n’est pas le cas de [(#CLE|=={nombre}|non)|ou(#CLE|=={check_album}|non) donc ça c’est pas bon
|ou fait la conjonction de valeurs logiques true/vrai/chaine-non-vide ou false/faux/chaine-vide, donc son argument doit être une telle valeur logique. Or dans ton 2eme exemple [(#CLE|=={nombre}|ou{check_data}|non), l’argument de |ou est check_data, qui n’est pas une valeur logique mais une chaine de caractère non vide, donc toujours équivalent à « true ».
La soluce que tu donnes ensuite est mal indentée ce qui la rend particulièrement malaisée à comprendre et débuguer en cas de problème.
Voici une manière de l’indenter de manière plus lisible :
ah oui, c’est effectivement plus lisible,
l’objectif est de ne pas traiter comme élément du tableau les clés nombre ou check_album
ainsi (#CLE|!={nombre}|et{#CLE|!={check_album}}) c’est non(a).non(b) , qui fait le job
mais non(a).non(b) = a+b
donc (#CLE|!=={nombre}|ou{#CLE|!=={check_album}}|non)
devrait le faire ? mais sans doute mal écrit ??? marche pô (doute avec |non)
en attendant je vais utiliser la syntaxe de touti
merci aux instructeurs
Les opérateurs « . » et « + » que tu utilises ici ne veulent rien dire en logique ou en spip, et le sens en PHP n’a rien à voir : tu emploies dans tes posts des notations qui n’existent pas, de même qu’avec spip tu employais une syntaxe qui n’existe pas (les parenthèses au lieu d’accolades).
Un peu de rigueur t’aidera beaucoup.
Ce qui a un sens c’est non a ET non b = non ( a ou b).
Et par ailleurs « non a », c’est pas pareil que « a ».
Je te laisse trouver l’expression avec « ou »…
pardon j’écrivais en logique booléenne le ET se note « . » et OU « + » et j’aurais aimé pouvoir écrire le non(a) avec la notation ā , mais ça se complique pour le non( a + b ) d’où ma simplification pas très académique je m’en excuse, mea-culpa
En plus je n’ai pas relu, c’est non(a).non(b) , qui fait le job mais non(a).non(b) = a+b
, je voulais ecrire c’est non(a).non(b) , qui fait le job mais non(a).non(b) = non( a + b )
d’où cette écriture en OU qui fonctionne (#CLE|=={nombre}|ou{#CLE|=={check_album}}|non)
Comme j’avais laissé trainer un « non-voulu » ! devant ==
(#CLE|!=={nombre}|ou{#CLE|!=={check_album}}|non) ça ne risquait pas de marcher