如何在字符串数组包含int值时对其进行排序
$files = array (
  '/test/tmp/file_7.sql.gz',
  '/test/tmp/file_9.sql.gz',
  '/test/tmp/file_11.sql.gz',
  '/test/tmp/file_1.sql.gz',
  '/test/tmp/file_3.sql.gz',
  '/test/tmp/file_12.sql.gz',
  '/test/tmp/file_13.sql.gz',
  '/test/tmp/file_10.sql.gz',
  '/test/tmp/file_5.sql.gz',
  '/test/tmp/file_2.sql.gz',
  '/test/tmp/file_8.sql',
  '/test/tmp/file_4.sql.gz',
  '/test/tmp/file_6.sql.gz',
);

echo "<pre>";
sort($files);
print_r($files);

When use sort() it gives output like following

Array
(
    [0] => /test/tmp/file_1.sql.gz
    [1] => /test/tmp/file_10.sql.gz
    [2] => /test/tmp/file_11.sql.gz
    [3] => /test/tmp/file_12.sql.gz
    [4] => /test/tmp/file_13.sql.gz
    [5] => /test/tmp/file_2.sql.gz
    [6] => /test/tmp/file_3.sql.gz
    [7] => /test/tmp/file_4.sql.gz
    [8] => /test/tmp/file_5.sql.gz
    [9] => /test/tmp/file_6.sql.gz
    [10] => /test/tmp/file_7.sql.gz
    [11] => /test/tmp/file_8.sql
    [12] => /test/tmp/file_9.sql.gz
)

But I want it like this

Array
(
    [0] => /test/tmp/file_1.sql.gz
    [1] => /test/tmp/file_2.sql.gz
    [2] => /test/tmp/file_3.sql.gz
    [3] => /test/tmp/file_4.sql.gz
    [4] => /test/tmp/file_5.sql.gz
    [5] => /test/tmp/file_6.sql.gz
    [6] => /test/tmp/file_7.sql.gz
    [7] => /test/tmp/file_8.sql
    [8] => /test/tmp/file_9.sql.gz
    [9] => /test/tmp/file_10.sql.gz
    [10] => /test/tmp/file_11.sql.gz
    [11] => /test/tmp/file_12.sql.gz
    [12] => /test/tmp/file_13.sql.gz
)

展开翻译

译文

  $ files = array(
'/test/tmp/file_7.sql.gz',
n'/test/tmp/file_9.sql.gz',
'/test/tmp/file_11.sql.gz',
'/test/tmp/file_1.sql.gz',
'/ test / tmp / file_3.sql.gz',
'/ test/tmp/file_12.sql.gz',
'/test/tmp/file_13.sql.gz',
'/test/tmp/file_10.sql .gz',
'/ test/tmp/file_5.sql.gz',
'/test/tmp/file_2.sql.gz',
'/test/tmp/file_8.sql',
' /test/tmp/file_4.sql.gz',
'/test/tmp/file_6.sql.gz',
);

echo“&lt; pre&gt;”;
sort($ files); \ nprint_r($ files);
</ code> </ pre>

当使用 sort()</ code>时,它会提供如下输出</ p>

  Array 

[0] =&gt; /test/tmp/file_1.sql.gz
[1] =&gt; /test/tmp/file_10.sql.gz
[2] = &gt; /test/tmp/file_11.sql.gz
[3] =&gt; /test/tmp/file_12.sql.gz
[4] =&gt; /test/tmp/file_13.sql.gz\ [5] =&gt; /test/tmp/file_2.sql.gz
[6] =&gt; /test/tmp/file_3.sql.gz
[7] =&gt; /test/tmp/file_4.sql .gz
[8] =&gt; /test/tmp/file_5.sql.gz
[9] =& GT; /test/tmp/file_6.sql.gz
[10] =&gt; /test/tmp/file_7.sql.gz
[11] =&gt; /test/tmp/file_8.sql
[12] =&gt; /test/tmp/file_9.sql.gz
)

nn

但我想要这样</ p>

  数组

[0] =&gt; /test/tmp/file_1.sql.gz
[1] =&gt; /test/tmp/file_2.sql.gz
[2] =&gt; / test /tmp/file_3.sql.gz
[3] =&gt; /test/tmp/file_4.sql.gz
[4] =&gt; /test/tmp/file_5.sql.gz
[5] = &gt; /test/tmp/file_6.sql.gz
[6] =&gt; /test/tmp/file_7.sql.gz
[7] =&gt; /test/tmp/file_8.sql
[8 ] =&gt; /test/tmp/file_9.sql.gz
[9] =&gt; /test/tmp/file_10.sql.gz
[10] =&gt; /test/tmp/file_11.sql.gz

[11] =&gt; /test/tmp/file_12.sql.gz
[12] =&gt; /test/tmp/file_13.sql.gz
)
</ pre> \ n </ div>

2个回答

You have to use a natural order algorithm : natsort() :

natsort($files);

And use array_values() to reset the index. For example:

natsort($files);
$files = array_values($files);
echo "<pre>";
print_r($files);

展开翻译

译文



您必须使用自然顺序</ code>算法: natsort()</ code> :</ p>

  natsort($ 文件); 
</ code> </ pre>

并使用 array_values()重置索引。 例如:</ p>

  natsort($ files); 
$ files = array_values($ files);
echo“&lt; pre&gt;”;
print_r($ files);

</ code> </ pre>
</ div>

duanbu9345
duanbu9345 感谢您编辑答案。
接近 2 年之前 回复
dongqiang1226
dongqiang1226 谢谢,它的工作。 但是没有对索引进行排序,然后使用array_values来重置索引。
接近 2 年之前 回复

You can use natsort() with array_values()

echo "<pre>";
natsort($files);
$files= array_values($files);
print_r($files);
echo "</pre>";

展开翻译

译文



您可以使用 natsort() array_values()</ a> </ p>

  echo“&lt; pre&gt;”; 
natsort($ files);
$ files = array_values($ files);
print_r($ files); \ necho“&lt; / pre&gt;”;
</ code> </ pre>
</ div>

duanpengya7074
duanpengya7074 好的,谢谢你的回答+1 :)
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!

相似问题

2
labview字符串输入以及显示
6
关于比较字符串函数strcmp()
99
只要回答,都给C币,请问怎么实现javascript对字符串和数字相互转换?
9
Vue前台传的字符串数组后台接收不到
16
java,现在有一个字符串数组希望转成long数组,有什么好方法?
3
C++字符串数组中的字符串长度与int数组内的数字比较之间的问题
3
怎么样对一个遍历一个不规则字符串数组,找到每列中最长字符串的大小
8
SQL查询语句,一个字段存储的数据为数组字符串,查询其是否包含某个值
2
jacascrup怎么对不同类型的字符串进行相加操作,字符串数组的相加怎么加?
4
怎么javascrpt语言实现将一个字符串转换为多个字符串构成的数组并且判断每个字符串的数组?
3
js字符串数组循环传入span标签
3
C#string数组转int数组异常显示输入字符串不正确?
1
我要被这道题逼疯了!为什么这个字符串数组有的时候不输出呢??
1
java程序设计(字符串排序)
1
c# 在命令行中输入任意10个字符串,根据字符串类型将输入的数据放入到不同数组中,最后将数组进行排序
2
可以用一维指针进行交换字符串的操作吗?
1
C语言字符串的排序问题如何解决?
3
C#如何把带小数点的字符串转化为字节数组,并且把每一位分割为单字节发送?
1
如何将字符串中所有单词摘出来到一个新的二维数组中
1
用指针数组 对字符串排序,怎么实现?