[英]Array : how to get file position by natural order sorting?
我想按自然順序對位於文件夾中的文件進行排序。 這些文件是:“ 1-Test1.docx”,“ 2-Test2.docx”,“ 3-Test3.docx”,“ 10-Test10.docx”。
當我使用以下內容時:
for( $i= 0 ; $i <= 4; $i++ ){
$nomfichier = glob("vendor/templates/part3/*.docx");
natsort ($nomfichier);
print_r ($nomfichier);
}
我有 :
Array ( [0] => folder1/folder2/1-Test1.docx [2] => folder1/folder2/2-Test2.docx [3] => folder1/folder2/1-Test3.docx [1] => folder1/folder2/10-Test10.docx )
沒關系。 但是,當我嘗試使用相同的自然順序回顯每個位置時,它在“ 1-Test1.docx”之后給出了“ 10-Test10.docx”。
$position = array_search($nomfichier[$i], $nomfichier);
// echo $nomfichier[$i]. " : ". $position;
給...
folder1/folder2/1-Test1.docx : 0 folder1/folder2/10-Test10.docx : 1 folder1/folder2/2-Test2.docx : 2 folder1/folder2/3-Test3.docx : 3
而我希望得到以下結果:
folder1/folder2/1-Test1.docx : 0 folder1/folder2/2-Test2.docx : 1 folder1/folder2/3-Test3.docx : 2 folder1/folder2/10-Test10.docx : 3
我該怎么做才能使其正常工作?
謝謝 !!
它在natsort
對數組進行排序時發生,但鍵保持不變。 因此,當您打印0
索引值時,它將打印10-Test10.docx
。 要正確實現此目的,可以將array_multisort
與SORT_NATURAL
標志一起使用,如下所示:
for( $i= 0 ; $i <= 4; $i++ ){
$nomfichier = glob("uploads/*.jpeg");
array_multisort($nomfichier, SORT_NATURAL);
$position = array_search($nomfichier[$i], $nomfichier);
echo $nomfichier[$i]. " : ". $position;
}
希望對您有幫助。
因為您使用的是for循環,所以索引將覆蓋排序。
當您進行循環並回顯$ arr [1]時,無論排序顯示什么,它仍然是數組中的項目1。
另一方面,Foreach不會循環索引並遵守排序順序。
// Your array
$arr = array (
0 => 'folder1/folder2/1-Test1.docx ',
2 => 'folder1/folder2/2-Test2.docx ',
3 => 'folder1/folder2/1-Test3.docx ',
1 => 'folder1/folder2/10-Test10.docx ',
);
foreach($arr as $val){
echo $val . PHP_EOL;
}
輸出:
folder1/folder2/1-Test1.docx
folder1/folder2/2-Test2.docx
folder1/folder2/1-Test3.docx
folder1/folder2/10-Test10.docx
如果由於某種原因需要知道索引鍵值,則可以使用foreach($arr as $key => $val){
而$ key將成為數組的索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.