2010-12-16 2 views
0

У меня есть php-файл с некоторыми массивами. Я хочу изменить один из этих массивов и записать его обратно в файл. Напр. говорят, файл test.php имеет содержание -Изменение значений массива в файле

<?php 
$arr1 = array("a"=>"b", "c" =>"d"); 
$arr2 = array("a2" => "b2", "c2" => "d2"); 

я хочу изменить $ arr1 так, что test.php теперь выглядит -

<?php 
$arr1 = array("a"=>"b", "c" =>"d", "e"=>"f"); 
$arr2 = array("a2" => "b2", "c2" => "d2"); 

Я не знаю, что массивы присутствуют в файле заранее.

Редактировать: я не добавляю никаких переменных в массив, а только другую пару значений ключа. Проблема в том, что массив является частью файла с большим количеством массивов, о котором я не всегда буду знать. Я могу добиться этого, если в файле был только один массив, но вы хотите знать, можно ли это сделать с помощью нескольких массивов.

+0

Трудно понять ваш контекст из вашего вопроса. Вы пытаетесь добавить неизвестные переменные в конец первого массива? Или вы пытаетесь определить содержимое первого массива на основе того, как изменяется второе? Просьба уточнить, что вы пытаетесь выполнить - при условии, что контекст цели скрипта может помочь. – DeaconDesperado 2010-12-16 15:03:51

+0

Я не понимаю ваш вопрос. По моему вопросу, очень ясно, что я пытаюсь добавить значение (а не переменную) во второй массив. Я не вижу никакой причины для путаницы или нисходящего потока здесь. – pinaki 2010-12-16 15:06:22

+0

Просто, чтобы уточнить, я не выпустил нисходящий знак. Я не был уверен в вашем вопросе, как вы обращались к этому другому файлу. Включен ли он или он читается удаленно? – DeaconDesperado 2010-12-16 15:12:53

ответ

1

Если вы находитесь в пределах функции (т. Е. Не в глобальном масштабе) get_defined_vars() может быть хорошей ставкой. Вам просто нужно включить файл в закрытую область и вернуть его ключи, чтобы получить все имена переменных в файле.

2

Вы можете ввести другой «глобальный» массив

$arr = array('arr1' => array("a"=>"b", "c" =>"d"), 'arr2' =>("a2" => "b2", "c2" => "d2")); 

и serialize это

$serArr = serialize($arr); 
//write to file here 

Когда вы читаете файл, просто unserialize его содержание, так у вас есть «глобальный» массив с его суб -arrays, измените нужные значения, сериализуйте их и запишите.

Имейте в виду, что это может быть большой проблемой производительности при написании больших массивов.

0
<?php 
$arr1 = array("a"=>"b", "c" =>"d"); 
$newarr=array("d"=>"f"); 
$arr1+=$newarr; 

Это было 5 лет, но я хочу дать простой способ, который работает для меня.

Смежные вопросы