Php 通过索引、增量向数组添加元素?

Php 通过索引、增量向数组添加元素?,php,arrays,indexing,Php,Arrays,Indexing,嘿,我刚刚偶然发现了一件事,如果没有副作用的话,它会帮我省下很多工作,就是说你有这个文件 0 0 0 你需要向它添加数字,有点像计数,但是你也需要修改字符串中的特定字符,而不是添加它们…但是你需要添加到末尾,而不是修改任何不存在的索引 因此,如果您使用上面的其中一行,并在其上使用str_split,然后尝试通过编号索引添加一些内容,它似乎不会混淆 比如说我想修改该文件第2行的第20个索引。由于没有第20个索引,它只会自动将元素添加到数组的末尾 我能顺其自然吗?或者让它这样做会有风险吗?像是我没

嘿,我刚刚偶然发现了一件事,如果没有副作用的话,它会帮我省下很多工作,就是说你有这个文件

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回音和换行符


编辑:好的,我只是在想如何更好地表达我的问题:如果stru split生成的数组中不存在索引,但您想添加该数组的某个索引,如果该索引还不存在,只将您要添加的内容添加到结束索引中是否正常?

我不太理解,但是,您可以通过以下方法安全地编辑第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));

上面的话让人困惑,但我想这就是你要问的。未经测试,所以是的。。。不管怎样

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

对不起,我想不出还能用什么词来形容它。显示一些代码!对不起,我不知道你在干什么。所以这就是我认为你想说的,如果我错了,请纠正我。您正在尝试读取文件的行,直到命中X为止(在您的示例中,X是20)。您正在尝试读取该行,直到Y为止(您从未列出Y,但假设它是10)。Y可以是字符长度,也可以由分隔符(如制表符、逗号或其他内容)在X&Y的某个点读取,您要更改该值(Z)。如果该值不存在(Y的计数不存在),则希望为Z的值添加一行新行。。。。对吗?嗨,爱媛,谢谢你的代码,不过我不是在找代码,我只是想知道我认为我理解的原则是正确的,还是只是侥幸。谢谢