如何更改php数组中的值类型并对其进行排序..是否可能?

时间:2010-03-27 09:45:10

标签: php arrays sorting

我的代码出了问题,希望有人能搞清楚。主要目的是根据数值对数组进行排序(然后重新索引其数字键)

我得到了这个文件名样本:

  $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 )

我测试了数组中的每个输出。 这是所有字符串(而不是数字),所以问题是如何将此字符串更改为整数,所以我可以将它从最低数字排序到最高数字

这段代码的主要目的是如何输出从最低到最高排序的数组?

2 个答案:

答案 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;