Вы можете использовать usort()
, чтобы точно определить способ сортировки массива. В этом случае массив $order
может использоваться в функции сравнения.
В приведенном ниже примере используется closure
, чтобы облегчить жизнь.
$order = array(3452342, 5867867, 7867867, 1231233);
$array = array(
array('id' => 7867867, 'title' => 'Some Title'),
array('id' => 3452342, 'title' => 'Some Title'),
array('id' => 1231233, 'title' => 'Some Title'),
array('id' => 5867867, 'title' => 'Some Title'),
);
usort($array, function ($a, $b) use ($order) {
$pos_a = array_search($a['id'], $order);
$pos_b = array_search($b['id'], $order);
return $pos_a - $pos_b;
});
var_dump($array);
Ключом к этой работе является сопоставление значений, являющихся позициями id
s в массиве $order
.
Функция сравнения работает путем нахождения позиций идентификаторы двух элементов, которые нужно сравнить в массиве $order
. Если $a['id']
приходит до $b['id']
в массиве $order
, то возвращаемое значение функции будет отрицательным ($a
меньше, поэтому «плавает» вверх). Если $a['id']
появляется после $b['id']
, функция возвращает положительное число ($a
больше, поэтому «опускается» вниз).
Наконец, нет особых причин использовать закрытие; это просто мой способ быстро написать эти виды отброшенных функций. Он также может использовать обычную именованную функцию.
Существует также "tagNext" для перемещения в следующий тег (или: tn< enter>)
Я использую tjump много. Это поддерживает заполнение клавишей Tab, которое полезно. Если несколько тегов будут найдены, то это даст список для Вас для выбора из, если только один будет найден, то это перейдет право на тег (в отличие от этого tselect).
Использование:
:tj foo
Я знаю два обходных решения для Вашей проблемы (кажется знанием этого также):
Можно использовать мой сценарий, который поможет Вам выбрать тег, в котором Вы нуждаетесь путем ввода некоторых букв имени класса или специальных тегов как 'поле', 'функция', 'конструктор', и т.д.