Bir php dizideki değerin türünü değiştirmek ve sıralama nasıl .. bu mümkün mü?

2 Cevap php

benim kod ile sorun var ve umarım bunu anlamaya mümkün birisi. Temel amacı to sort array based on its value (then reindex its numerical key).

i dosya bu örnek var:

  $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>";
    }   
}

Bu kodun çıktısı olacak:

Array ( [0] => 198 [1] => 192 [2] => 144 [3] => 2 [4] => 1 [5] => 100 [6] => 111 )

i dizide her çıkış testi var. It's all string (and not numerical) Yani soru tamsayı bu dizeyi değiştirmek için nasıl, yani i can sort it from the lowest into the highest number ?

Bu kodun temel amacı çıkış diziye bu sıralama en yüksek ila olmuştu nerede nasıl?

2 Cevap

preg_match $outpu[1] olarak eşleşen parçası tutacak, böylece int için string dönüştürmek için bundan faydalanmak ve daha sonra ekleyebilirsiniz Lütfen alloutput diziye.

foreach ($filename as $name) {
    preg_match('#(\d+)#', $name, $output);
    $alloutput[] = intval($output[1]);
}