Jump to content
php.lv forumi

Faila konkrētās rindas skaita noteikšna.


raivis

Recommended Posts

Sveicināti web attīstītāji!

 

Piedodiet, es glīgi netieku galā ar faila konkrētās rindas skaita noteikšnu, no kuras tiek nolasītas mainīgo vērtības pēc $info['user'] izsaukumu $id.

 

Ceru, ka jūs varat man ko ietikt, kā man pēc šā koda parauga noteikt konkrētās rindas skaitu (piem. 8., vai 109.)!

Kā lai nolasu attiecīgo mainītāju vērtības no konkrētas rindas, piem. no 7.(septītās)!?

 

Paldies!

Ļoti gaidīšu kādu atbildi.

 

 

<?php

 $fileData = file("data.txt");  //data.txt--> lietotajs|vards|2006|Riga
 $personList = array();
 foreach ($fileData as $rowa){
list($user,$name,$year,$city) = explode('|', $rowa);
$personList[] = array('user'=>$user,'name'=>$name,'year'=>$year,'city'=>$city);
 }

 echo '<h1>Personas dati</h1>';
 foreach ($personList as $key => $info){
if ($info['user'] == $id){	//piem. index.php?id=janis

   echo '<h2>'.$info['name'].'</h2>
   <p>Year: '.$info['year'].'</p>
   <p>City: '.$info['city'].'</p>

   Atrodas data.txt rindā: '.$row;
  //$row++;

}
 }

?>

Link to comment
Share on other sites

Labak butu izmantot for f-ju, foreach vieta.

//ieprieksejais kods 
$personList = array();
$i = 1;
 foreach ($fileData as $rowa){
list($user,$name,$year,$city) = explode('|', $rowa);
$personList[] = array('user'=>$user,'name'=>$name,'year'=>$year,'city'=>$city);

$i++;
 }
// turpinas kods

Link to comment
Share on other sites

Kam to $i++ vajag?

Tikapat labi MakaTaNaw koda vietā var rakstīt:

//ieprieksejais kods
$personList = array();
 foreach ($fileData as $rowa){
list($user,$name,$year,$city) = explode('|', $rowa);
$personList[] = array('user'=>$user,'name'=>$name,'year'=>$year,'city'=>$city);
 }

$i = count($personList) + 1;
// turpinas kods

Un rezultāts tas pats.

 

 

raivis: ja tev vajag 7-to personList masīva elementu tad tā arī raksti (masīvi skaitās no 0, tāpēc jāņem 7-1=6 elements):

echo $personList[6]["name"];

Link to comment
Share on other sites

<?php
$lines=file('data.txt');
foreach($lines as $line_num => $line){
$a=explode('|',$line);
if($_GET['id']==$a[0]){
echo'<h1>Personas dati</h1>';
echo'<h2>'.$a[1].'</h2>
<p>Year: '.$a[2].'</p>
<p>City: '.$a[3].'</p>
<p>Atrodas data.txt rindā: '.($line_num+1).'.</p>';
// vispaar saak skaitiit no 0, ja der, tad bez +1
}
}  
?>

Edited by blackhalt
Link to comment
Share on other sites

2 blackhalt

Tā gan laikam īsti labi nebūs. Iedomājies, tev failā ir 1000 rindu, jānis ir, piem. 3. Un ko, viņš izvedīs infu par jāni, un tālāk pārlasīs 997 rindas? :) Bez tam arī foreach dotajā gadījumā ir lieks - izpildās krietni lēnāk par for().

<?php
$lines=file('data.txt');
$count = sizeof($lines);

for($i = 0;$i < $count;$i++) {
$a=explode('|',$line);
if($_GET['id']==$a[0]) break;
}
echo'<h1>Personas dati</h1>';
echo'<h2>'.$a[1].'</h2>
<p>Year: '.$a[2].'</p>
<p>City: '.$a[3].'</p>
<p>Atrodas data.txt rindā: '.($i+1).'.</p>';
// vispaar saak skaitiit no 0, ja der, tad bez +1
?>

Edited by john.brown
Link to comment
Share on other sites

Ja ir divi jāņi, tad jā.

un, ja viņš ir 994 rindiņā, tad vajadzētu skatīt no otra gala --$i

:)

Edited by blackhalt
Link to comment
Share on other sites

×
×
  • Create New...