在 foreach 迴圈中按元素對 PHP 陣列進行排序
P粉567281015
P粉567281015 2024-03-31 10:17:19
0
2
398

我使用 PHP 存取文字檔案中包含的一些資料。 以下是文字檔案 (myfile.txt) 的範例 - 每行都有三個字段,由 || 分隔:

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

這是我用來在簡單的 HTML 表格中顯示 txt 檔案內容的 PHP 程式碼。 我訪問該文件並循環遍歷每一行以提取三個部分:

<?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>

我需要根據第三個欄位(類別)對行進行排序,以便顯示類別 A、B、C 的條目。

我嘗試在 foreach 迴圈中使用 sort() 指令,但沒有成功。 有什麼想法嗎?

P粉567281015
P粉567281015

全部回覆(2)
P粉373596828

您可以使用下一個方法:

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

線上運行 PHP

#
P粉897881626

您可以只使用兩個 for 迴圈來實現它。


'; echo ''; echo ''; echo ''; echo ''; } ?>
ID TEXT CATEGORY
'.$id.''.$text.''.$category.'
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板