Подтвердить что ты не робот

Php ассоциативный массив ключей (не сортировка)

Мой массив:

$data = array('two' => 2, 'one' => 1, 'three' => 3);

Теперь, когда я повторяю массив, первое значение, которое появится, вероятно, будет

$data['two'] // = 2 @ index[0]

правильно?

Что делать, если я хочу переместить $data [1] в позицию $data [0]?

Перефразировать:

Как заставить массив выглядеть так (так что "один" появляется в $data [0])

$data = array('one' => 1, 'two' => 2, 'three' => 3

Зачем мне это нужно?

Я использую воспламенитель кода, встроенная функция table- > generate принимает ассоциативный массив и создает таблицу, но не предлагает метода размещения столбцов. Вот почему я хотел бы переместить столбцы в исходном массиве.

4b9b3361

Ответ 2

Два возможных решения (без использования array_splice):

1) Создайте новый массив с новым порядком ключей.

$new_keys = array('one', 'two', 'three');
$new_data = array();
foreach ($new_keys as $key) {
    $new_data[$key] = $data[$key];
}
$data = $new_data;

2) Переместите элемент one вверх, удалите его из $data и скопируйте оставшуюся часть массива.

function rearrangeData($data) {
    $result['one'] = $data['one'];
    unset($data['one']);
    return array_merge($result, $data);
}    
$data = rearrangeData($data);

Ответ 3

PHP имеет 13 функций для сортировки массивов, по ключу, по значению, определяемыми пользователем функциями, где вы можете указать, что "один" приходит перед "двумя". Там также array_shift, array_unshift, array_push и array_pop для перемещения вещей на фронт или конец массива. Вы можете построить целый новый массив из существующего.

Ответ 4

Смотрите ksort и uksort.

Вот рабочий пример:

<?php

$data = array('two' => 2, 'one' => 1, 'three' => 3);
print_r($data);
ksort($data);
print_r($data);
uksort($data,'cmp');
print_r($data);
function cmp($a, $b)
{
    $num=' one two three four five six seven eight nine ten';
    $ai = stripos($num,$a);
    $bi = stripos($num,$b);
    if ($ai>0 && $bi>0) {
        return ($ai > $bi) ? 1 : -1;
    }
    return strcasecmp($a, $b);
}

Вывод:

Array
(
    [two] => 2
    [one] => 1
    [three] => 3
)
Array
(
    [one] => 1
    [three] => 3
    [two] => 2
)
Array
(
    [one] => 1
    [two] => 2
    [three] => 3
)

Запустите это: http://codepad.org/yAK1b1IP

Ответ 5

Я думаю, вы должны использовать функцию asort:

$data = array('two' => 2, 'one' => 1, 'three' => 3);

$dataOrdered = $data;
asort($dataOrdered);

Запустить этот код