2012-04-19 9 views
0

はちょっと私に多くの作業を保存するために起こっている私はちょうど偶然見つけた何かが、副作用がありません提供されるものは、あなたがこのファイルインデックスを使用して配列に要素を追加すると、増分されますか? 、

0 
0 
0 

を持っていて、それに番号を追加する必要があると言うことができますされます並べ替えのようなものですが、文字列内の特定の文字を追加するのではなく、変更する必要がありますが、存在しないインデックスを変更する代わりに末尾に追加したい場合...

So上記の行のうちの1つを使用してstr_splitを使用し、番号の付いたインデックスを使って何かを追加しようとすると、混乱することはありません!

私はそのファイルの2行目の20番目のインデックスを修正したいとします。 20番目のインデックスがないので、配列の最後に要素を自動的に追加するだけです。

このスライドを許可するか、これを許可するだけで危険なのかもしれませんか?私が気づいていない副作用のように...

もし私が尋ねていたことを理解できなかったために閉鎖された質問があったのなら、男性:....

申し訳ありませんが、私はそれ以外の言葉遣いを考えていません。

[OK]を、ここでいくつかのコード

$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を組み合わせる私のデバッグ機能が壊れ

EDIT:[OK]をちょうど考えどのようにもっと良い言葉私の質問をする:インデックスが存在しません。 str_splitで作成された配列では、その配列の特定のインデックスを追加したい場合、そのインデックスがまだ存在しない場合は、代わりにエンドインデックスに追加するものを追加するのが普通ですか?

+0

申し訳ありませんが、私はあなたが何をしているのか分かりません。 –

+0

Okコードを追加しました – user1159454

+0

これは私が間違っていると言っていると思います。あなたは、Xがヒットするまで(Xはあなたの例では20です)、あなたが読んでみようとしているファイルの行をY(あなたはYをリストアップしていませんでしたが、 XまたはYのその点で区切り記号(タブ、またはカンマなど)を読み取って、その値(Z)を変更します。その値が存在しない場合(Count of Yは存在しません)、Zの値にNEW LINEを追加します。 – ehime

答えて

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