Utilisation de utils::setJsonAttr

Bonjour,

Afin de pouvoir faire ce que je souhaiterai j’aurai besoin de petites précisions concernant une méthode de class de jeedom : utils::setJsonAttr($_attr, $_key, $_value = null)

Si je souhaite passer un tableau :

[
   'name' => 'test',
   'color' => '#fff',
   'cmdstart' => array()
]

Comment dois-je m’y prendre ?
$_attr je mets simplement une variable vide de mon choix (non créée avant), $_key le array des clés de mon tableau et $_value le array des valeurs de mon tableau ?

Bonsoir,

Habituellement $_attr est déja « set » dans la class, il contient donc déja un array.
le fonction utils::setJsonAttr permet d’ajouter/supprimer/modifier la valeur d’une clé, ou d’ajouter un array dans le array existant.


Tu peut très bien partir d’une variable qui n’est pas un array, mais il faut au moins initier une variable avant, sinon tu aura des PHP Notice dans les log.

Oui $_key peut être un array, ou simplement une clé a ajouter/supprimer/modifier

non $_value ne peut être un array.


Voici un exemple a mettre dans un bloc code scénario :

$_attr1 = [
   'name' => 'test',
   'color' => '#fff'
];

$_attr2 = [
  'cmdstart' => [
  'start' => 'active',
  'stop' => 'inactive'
  ]
];

$scenario->setLog('1) ' . json_encode($_attr1));

$display = utils::setJsonAttr($_attr1, "name", "test2"); // modification de la clé "name" par valeur "test2" si elle existe, sinon elle sera ajoutée.
$scenario->setLog('2) ' . json_encode($display));

$display = utils::setJsonAttr($_attr1, "color"); // suppression de la clé "color"
$scenario->setLog('3) ' . json_encode($display));

$display = utils::setJsonAttr($_attr1, $_attr2); // ajout array dans le array existant
$scenario->setLog('4) ' . json_encode($display));
1 « J'aime »