Isih elemen tatasusunan PHP dalam gelung foreach
P粉567281015
P粉567281015 2024-03-31 10:17:19
0
2
407

Saya menggunakan PHP untuk mengakses beberapa data yang terkandung dalam fail teks. Berikut ialah contoh fail teks (myfile.txt) - setiap baris mempunyai tiga medan, dipisahkan dengan ||:

4e84||some text||category A  
f17b||words words||category B  
f7ac||some more text here||category B  
8683||text text||category C  
b010||more text||category A  
fcc4||more text||category B  
we47||more text||category C  
08ml||more text||category A

Ini ialah kod PHP yang saya gunakan untuk memaparkan kandungan fail txt dalam jadual HTML ringkas. Saya mengakses fail dan gelung melalui setiap baris untuk mengekstrak tiga bahagian:

<?php
$lines = file("myfile.txt");
?>
<table>
 <thead>
  <tr>
   <th>ID</th>
   <th>TEXT</th>
   <th>CATEGORY</th>
  </tr>
 </thead>
 <tbody>
<?php
foreach ($lines as $line) {
list($id,$text,$category) = explode('||', $line);
echo '<tr>';
echo '<td>'.$id.'</td>';
echo '<td>'.$text.'</td>';
echo '<td>'.$category.'</td>';
echo '</tr>';
}
?>
 </tbody>
</table>

Saya perlu mengisih baris berdasarkan medan ketiga (kategori) supaya entri untuk kategori A,B,C dipaparkan.

Saya cuba menggunakan arahan sort() di dalam gelung foreach tetapi tidak berjaya. Ada idea?

P粉567281015
P粉567281015

membalas semua(2)
P粉373596828

Anda boleh menggunakan kaedah berikut:

$split_lines = [];

// first - split lines and put them into array
foreach ($lines as $line) {
    $split_lines[] = explode('||', $line);
}

// sort array by function
usort($split_lines, fn($a,$b)=>$a[2]$b[2]);
    
// show array as table
foreach ($split_lines as $line) {
    echo '';
    echo ''.$line[0].'';
    echo ''.$line[1].'';
    echo ''.$line[2].'';
    echo '' . PHP_EOL;
}

Jalankan PHP dalam talian

P粉897881626

Anda boleh melaksanakannya menggunakan hanya dua untuk gelung.


'; echo ''; echo ''; echo ''; echo ''; } ?>
ID TEXT CATEGORY
'.$id.''.$text.''.$category.'
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan