2012-04-19 79 views
0

嘿东西,我只是偶然被发现,那将我节省了大量的工作,但必须有没有副作用,是那可以说你有这个文件通过索引向数组添加元素,增量?

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呼应和换行符

编辑:好吧只是想如何更好的词,我的问题:当一个索引不存在在由str_split创建的数组中,但是您想要添加该数组的某个索引,如果该索引尚不存在,那么添加添加到结尾索引的内容是否正常?

+0

*对不起,但我想不出怎么说它。*显示一些代码!对不起,但我不知道你在做什么。 – 2012-04-19 20:13:06

+0

好的,我添加了代码 – user1159454 2012-04-19 20:18:44

+0

所以这就是我想你想说的,纠正我,如果我错了。你正试图读取文件的行,直到X被击中(在你的例子中X是20),你试图读出该行直到Y(你从未列出Y,但可以说它是10)Y可以是字符长度或通过分隔符(如制表符,或逗号或其他)来读取X和Y的那一点,以便更改该值(Z)。如果该值不存在(Y的计数不存在),那么您希望为Z的值附加一个NEW LINE ....对吗? – ehime 2012-04-19 22:13:41

回答

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)); 
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));