как изменить тип значения в массиве php и сортировать его .. это возможно? - PullRequest
2 голосов
/ 27 марта 2010

У меня проблема с моим кодом, и, надеюсь, кто-то сможет это выяснить. Основная цель - отсортировать массив по его значению (затем переиндексировать его числовой ключ) .

Я получил этот образец имени файла:

  $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] => 198 [1] => 192 [2] => 144 [3] => 2 [4] => 1 [5] => 100 [6] => 111 )

У меня есть тестирование каждого выхода в массиве. Это все строки (а не числовые) , поэтому вопрос заключается в том, как изменить эту строку на целое, чтобы я мог отсортировать ее из самого младшего в наибольшее число ?

основное назначение этого кода - как вывести массив там, где он был отсортирован от минимального к максимальному?

Ответы [ 2 ]

1 голос
/ 27 марта 2010

preg_match сохранит соответствующую часть в $outpu[1], поэтому вы можете использовать ее для преобразования string в int и добавления ее в массив alloutput.

foreach ($filename as $name) {
    preg_match('#(\d+)#', $name, $output);
    $alloutput[] = intval($output[1]);
}
0 голосов
/ 27 марта 2010

Использование intval

$number_string = '14';
$number = intval('14');

С помощью intval вы также можете указать основание. Если число десятичное, то вы также можете использовать

$number = (int) $number_string;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...