php de dosya içindeki belirli diziyi nasıl değiştirebiliriz ?
1|gs
2|fb
33|ts
4|bjk
67|ist
6|ank
yukarıdaki okunan.txt içeriği burada 6 hane var
sağ taraflarında kelimesel değerler var
önlerindeki rakamsal degerler var belirli bir satırdaki kelimesel değerin önündeki rakamsal değer
nasıl değiştirebilinir bir sayac yani +1 artacak şekilde ?
mesela 5. satırdaki 67|ist hanesindeki rakamsal değer +1 olarak artsın.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
https://akman.me/atolye/code/pt_471/index.php
https://akman.me/atolye/code/pt_471/PT.471.zip
// print helper
function _e($s,$d = false ){ echo '<pre>';print_r($s);echo '</pre>';if($d) die(); }
// @data_arr : string array dataya cevir
function data_arr($str = false){
if(!$str) return false;
$str = trim($str);
$str = explode(PHP_EOL,$str);
$arr = [];
foreach ($str as $key => $value) {
$arr[$key] = explode('|',trim($value));
}
return $arr;
};
// @data_set : datayı degeri setler
function data_set($arr, $i, $v=false ){
$arr[$i][0] = $v ? $v : $arr[$i][0]+1;
return $arr;
};
// senin string data
$str ='
1|gs
2|fb
33|ts
4|bjk
67|ist
6|ank
';
// String verini array dataya asagidaki fonksiyon ile al
$strArr = data_arr($str);
_e($strArr);
// Simdi setlemek istedigin index kaydını asagidaki gibi yaz
$setArr = data_set($strArr,2);
// Bir arttırmak yerine kendin deger vermek istersen</b>
$setArr = data_set($strArr,1,'alico');
\n
ile split yaparsın.
her satırı diziye çevirirsin.
sonra istediğin kelimeyi search edersin.
bulduktan sonra yine |
ile split yapıp yine diziye çevirip sıfırıncı indisi bir artırırsın.
dosya boyutu büyüdükçe sıkıntı olur. sqlite kullan. sqlite dan istediğin formata dönüştürürsün.
dosyaya kayıt yapmak performanslı değil.
php bilsem yazardım.