Обратный массив в php

<code>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) }
}
</code>

Я просто хотел бы изменить это, поэтому id 6 (с roi 2600) идет первым в массиве и т. Д.

Как я могу это сделать?array_reverse() а такжеrsort() не работает в этом случае

 pcarvalho05 мар. 2016 г., 14:10
Ни один из них не является правильным ответом?
 AbraCadaver06 июл. 2016 г., 16:12
Просто собираешься оставить это повешенным? Если никто не помог вам, опубликуйте свое решение и отметьте его как принятое.

Ответы на вопрос(5)

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

$newArray = array_reverse($theArray, true);

Важной частью являетсяtrue параметр, который сохраняет ключи.

Не убежден? Вы можете увидеть это в действии наэтот пример.

 05 апр. 2012 г., 14:09
@Kolink + OP почему бы и нет?
 05 апр. 2012 г., 14:12
Потому что они хотят сохранить ключевую ассоциативность?
 05 апр. 2012 г., 14:16
Ах, так оно и есть, с дополнительнымpreserve_keys параметр. Виноват.
 05 апр. 2012 г., 14:08
& Quot;array_reverse() не работает в этом случае ", говорит вопрос ...
 05 апр. 2012 г., 14:14
@ Колинк так ???array_reverse() делает это Я предлагаю вам прочитатьdocs.
$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>';

Вы можете использоватьusort() функция, как так

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

Это будет гарантировать, что элемент с самым высоким roi является первым в массиве.

foreach($array as $arr){

  array_unshift($array, $arr); 
  array_pop($array);

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

Ваш ответ на вопрос