array(7) {
  [0]=> array(2) { ["id"]=> string(1) "9"  ["roi"]=> float(0)    }
  [1]=> array(2) { ["id"]=> string(1) "1"  ["roi"]=> float(0)    }
  [2]=> array(2) { ["id"]=> string(2) "10" ["roi"]=> float(0)    }
  [3]=> array(2) { ["id"]=> string(2) "14" ["roi"]=> float(0)    }
  [4]=> array(2) { ["id"]=> string(1) "4"  ["roi"]=> float(0)    }
  [5]=> array(2) { ["id"]=> string(1) "5"  ["roi"]=> float(141)  }
  [6]=> array(2) { ["id"]=> string(1) "6"  ["roi"]=> float(2600) }
}

Me gustaría revertir esta, por lo tanto, id 6 (con retorno de inversión de 2600) ocupa el primer lugar en la matriz etc.

¿Cómo puedo hacer esto? array_reverse() y rsort() no funciona en este caso

  • ninguno de estos es la respuesta correcta?
  • Sólo voy a dejar este colgante? Si ninguno ayudado a usted, a continuación, publicar su solución y marca es aceptada.
InformationsquelleAutor Karem | 2012-04-05

5 Comentarios

  1. 23

    http://php.net/manual/en/function.array-reverse.php:

    $newArray = array_reverse($theArray, true);

    La parte importante es el true parámetro, que conserva las llaves.

    No está convencido? Usted puede ver en acción en este codepad exampole.

    • «array_reverse() no funciona en este caso», dice la pregunta…
    • OP ¿por qué no?
    • Porque quieren mantener la clave de la asociatividad?
    • así??? array_reverse() hace eso. Le sugiero que lea el docs.
    • Ah, así que, con el extra preserve_keys parámetro. Mi error.
  2. 1
    $res = array(
        0=>array("id"=>9, "roi"=>0),
        1=>array("id"=>1,"roi"=>0),
        2=>array("id"=>10,"roi"=>0),
        3=>array("id"=>14,"roi"=>0),
        4=>array("id"=>4,"roi"=>0),
        5=>array("id"=>5,"roi"=>141),
        6=>array("id"=>6,"roi"=>2600));
    
    $res4   =   array(); 
    $count  = count($res);
    
    for($i=$count-1;$i>=0;$i--){
        $res4[$i] =$res[$i]; 
    }
    
    print_r($res4);
  3. 0

    Puede utilizar un usort() de su función, como así

    $arr = array('......'); //your array
    usort($arr, "my_reverse_array");
    
    function my_reverse_array($a, $b) {
        if($a['roi'] == $b['roi'])
        {
            return 0;
        }
        return ($a['roi'] < $b['roi']) ? -1 : 1;
    }

    Esto se asegurará de que el elemento con el mayor retorno sobre la inversión es el primero en la matriz.

  4. 0
    $res = array(
        0=>array("id"=>9, "roi"=>0),
        1=>array("id"=>1,"roi"=>0),
        2=>array("id"=>10,"roi"=>0),
        3=>array("id"=>14,"roi"=>0),
        4=>array("id"=>4,"roi"=>0),
        5=>array("id"=>5,"roi"=>141),
        6=>array("id"=>6,"roi"=>2600));
        $count = count($res);
    
        for ($i=0, $j=$count-1; $i<=floor($count/2); $i++, $j--) {
            $temp = $res[$j];
            $res[$j] = $res[$i];
            $res[$i] = $temp;
        }
        echo '<pre>';
        print_r($res);
        echo '</pre>';

Dejar respuesta

Please enter your comment!
Please enter your name here