【问题标题】:Adding elements to arrays via indexes, increments?通过索引、增量向数组添加元素?
【发布时间】:2012-04-19 20:11:02
【问题描述】:

嘿,我刚刚偶然发现了一些东西,只要没有副作用,它会为我节省很多工作,也就是说你有这个文件

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 制成的数组中不存在索引时,但您想添加该数组的某个索引,如果该索引尚不存在,只是将您要添加的内容添加到结束索引中是否正常?

【问题讨论】:

  • 抱歉,我想不出还有什么好说的。显示一些代码!抱歉,我不知道你在做什么。
  • 所以这就是我想你想说的,如果我错了,请纠正我。您正在尝试读取文件的行,直到 X 被命中(X 在您的示例中为 20)它们您试图读取该行直到 Y(您从未列出 Y,但可以说它的 10)Y 可以是字符长度或在您想要更改该值 (Z) 的 X&Y 点处由分隔符(如制表符、逗号或其他内容)读取。如果该值不存在(Y 的计数不存在),您想为 Z.... 的值附加一个新行,对吗?
  • 嗨 ehime 感谢您的代码,但是我不是在寻找代码,我只是想知道我认为我理解的原理是否正确,或者这只是侥幸。谢谢!

标签: php arrays indexing


【解决方案1】:

我没有正确理解,但这里是您可以安全地编辑第 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));

【讨论】:

    【解决方案2】:

    以上内容令人困惑,但我认为这就是您要问的。未经测试所以是的...随便...

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

    【讨论】:

      猜你喜欢
      • 2019-08-08
      • 2023-01-02
      • 1970-01-01
      • 1970-01-01
      • 2017-08-30
      • 2016-03-14
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多