Как к заявкам на изменение массива?

$a = array(0=>'a',1=>'b',2=>'c', 3=>'d');

Я хочу изменить порядок быть 3,2,0,1

$a = array(3=>'d',2=>'c',0=>'a', 1=>'b');
5
задан double-beep 12 February 2019 в 18:48
поделиться

3 ответа

Если вы хотите программно изменить порядок, посмотрите на различные функции сортировки массивов в PHP, especially

  • uasort()- Сортируйте массив с помощью пользовательской функции сравнения и поддерживайте ассоциацию индексов
  • uksort()- Сортируйте массив по ключам с помощью пользовательской функции сравнения
  • usort()- Сортируйте массив по значениям с помощью пользовательской функции сравнения

Основываясь на приведенном ниже примере Yannicks, вы могли бы сделать это таким образом:

$a = array(0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd');
$b = array(3, 2, 0, 1); // rule indicating new key order
$c = array();
foreach($b as $index) {
    $c[$index] = $a[$index];
}
print_r($c);

дало бы

Array([3] => d [2] => c [0] => a [1] => b)

но как я уже сказал в комментариях, если вы не скажете нам правило, по которому упорядочивать массив, или не уточните ваши потребности, мы не сможем вам помочь дальше.

18
ответ дан 18 December 2019 в 06:11
поделиться

Вот как

krsort($a);
-5
ответ дан 18 December 2019 в 06:11
поделиться

Поскольку массивы в PHP на самом деле упорядоченные карты, я не уверен, если порядок элементов сохраняется при перечислении.

Если вы просто хотите перечислить их в определенном порядке:

$a = array(0=>'a',1=>'b',2=>'c', 3=>'d');
$order = array(3, 2, 0, 1);

foreach ($order as $index)
{
  echo "$index => " . $a[$index] . "\n";
}
7
ответ дан 18 December 2019 в 06:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: