2017-01-25 1 views
0

J'ai un tableau dans un fichier et je veux changer une valeur de cela et l'écrire dans le fichier comme le fichier original.Remplacer la clé dans le tableau du fichier externe et l'écrire

Mon fichier avec le tableau:

return [ 
    'modules' => [ 
     'test-module1'  => 1, 
     'test-module2'  => 1, 
    ], 
]; 

Je veux remplacer une valeur (les chiffres) et l'écrire en arrière comme ce style à un fichier avec PHP (quand il est possible).

E.g. Je veux désactiver test-module1 et définir la clé à 0. Quel est le meilleur moyen. Je n'ai pas de plan pour le moment.

EDIT: Je sais comment changer la clé mais je ne sais pas comment l'écrire dans le fichier.

+3

Cela semble être un mauvais moyen de formater un fichier de données. Il serait préférable d'utiliser le format JSON ou 'serialize()'. – Barmar

+0

Utilisez la fonction 'var_export' –

+1

Vous ne voulez pas faire cela. Vous voulez réfléchir un peu à ce que vous faites et trouver une meilleure façon de le faire. Suggérer vous avez une idée de ce que @Barmar a suggéré – RiggsFolly

Répondre

2

Je fais cela avec JSON. Cependant, si vous êtes lié à ce format, il retourne un tableau. Il suffit d'inclure, de modifier et d'écrire:

$result = include('path/to/file.php'); 
$result['modules']['test-module1'] = 0; 

Mais il serait difficile d'obtenir ce format. Vous obtiendrez l'autre format de tableau avec var_export():

file_put_contents('path/to/file.php', 'return ' . var_export($result, true) . ';');  

rendements:

return array (
    'modules' => 
    array (
    'test-module1' => 0, 
    'test-module2' => 1, 
), 
); 

Cependant, json_encode($result, JSON_PRETTY_PRINT); va céder:

{ 
    "modules": { 
     "test-module1": 0, 
     "test-module2": 1 
    } 
} 

Ensuite, vous pouvez utiliser file_get_contents() et json_decode() à partir de là. Pas besoin de return.

+0

Oh peut-être pas. Le résultat d'une inclusion est vrai ou faux – RiggsFolly

+0

Pas lorsque vous renvoyez une valeur. http://php.net/manual/en/function.include.php Exemple # 5 – AbraCadaver

+0

Oh oui, mon erreur de test. Silly Billy Moi. – RiggsFolly