我的代码出了问题,希望有人能搞清楚。主要目的是根据数值对数组进行排序(然后重新索引其数字键)。
我得到了这个文件名样本:
$filename = array("index 198.php", "index 192.php", "index 144.php", "index 2.php", "index 1.php", "index 100.php", "index 111.php");
$alloutput = array(); //all of index in array
foreach ($filename as $name) {
preg_match('#(\d+)#', $name, $output); // take only the numerical from file name
array_shift($output); // cleaned. the last code create duplicate numerical in $output,
if (is_array($output)) {
$alloutput = array_merge($alloutput, $output);
}
}
//try to check the type of every value in array
foreach ($alloutput as $output) {
if (is_array($output)) {
echo "array true </br>";
} elseif (is_int($output)) {
echo "integer true </br>";
} elseif (is_string($output)) { //the numerical taken from filename always resuld "string".
echo "string true </br>";
}
}
此代码的输出将为:
排列 ( [0] =&gt; 198 [1] =&gt; 192 [2] =&gt; 144 [3] =&gt; 2 [4] =&gt; 1 [5] =&gt; 100 [6] =&gt; 111 )
我测试了数组中的每个输出。 这是所有字符串(而不是数字),所以问题是如何将此字符串更改为整数,所以我可以将它从最低数字排序到最高数字?
这段代码的主要目的是如何输出从最低到最高排序的数组?
答案 0 :(得分:1)
preg_match
会将匹配的部分保留在$outpu[1]
中,这样您就可以利用它将string
转换为int
,然后将其添加到alloutput
数组。
foreach ($filename as $name) {
preg_match('#(\d+)#', $name, $output);
$alloutput[] = intval($output[1]);
}
答案 1 :(得分:0)
使用intval
$number_string = '14';
$number = intval('14');
使用intval,您也可以指定基础。如果数字是十进制,请使用
$number = (int) $number_string;