通过索引,增量向元数添加元素?

时间:2012-04-19 20:11:03

标签: php arrays indexing

嘿嘿我偶然发现的东西,如果没有副作用,那将会为我节省很多工作,就是说你有这个文件

0
0
0

你需要为它添加数字,有点像计数,但你也想修改字符串中的特定字符,而不是添加它们....但你想添加到最后而不是修改任何字符不存在的指数......

因此,如果您使用上面的其中一行,并在其上使用str_split,然后尝试通过编号索引添加内容,它似乎不会混淆!

就像我想要修改该文件第2行的第20个索引一样。由于没有第20个索引,它只会自动将元素添加到数组的末尾。

我可以让这张幻灯片或者让这样做有风险吗?就像我不知道的副作用或什么......

如果有任何问题需要关闭,因为他们不明白我在问什么......:P

很抱歉,但我想不出怎么说出来。

好的,这里有一些代码

$change_str = str_split($array_change[$list_num]);
UltraDB($change_str, "Change String BEFORE");
$change_str[20] = '5';
$array_change[$list_num] = implode('', $change_str);
foreach($array_change as $v){
file_put_contents("file.txt", $v . "\n", FILE_APPEND);
}
UltraDB($array_change, "File is now.");

UltraDB只是我的调试功能,结合了var_dump echoing和换行符

编辑:好的只是想如何更好地说出我的问题:当一个索引不存在于由str_split构成的数组中,但是你想要添加该数组的某个索引时,如果该索引尚不存在,它只是添加你要添加到结束索引的内容是正常的吗?

2 个答案:

答案 0 :(得分:0)

我不能理解它,但是这里是你如何安全地编辑第20行而没有任何需要的值只是行号:

$file = file('file.txt');
$file[19] = $file[19]++; // the index starts with so for line 20 we take index 19

// and saving it
file_put_contents('file.txt', implode(PHP_EOL, $file));

答案 1 :(得分:0)

以上令人困惑,但我认为这就是你所要求的。未经测试,所以是的......无论如何......

$d=' '; //delimiter

$x=20;  //how many lines in
$y=10;  //how many values out
$z=4;   //value to insert at X/Y

$file = file('file.txt');
$tmp = explode($d, $file[$x]);

if($file[$y]) {
    $file[$y]=$z;
} else {
    $file[]=$z;
}

foreach($file as &$line){
    $line = implode($d, $line);
}

file_put_contents('file.txt', implode(PHP_EOL, $file));