При условии, что у вас одинаковое количество элементов в каждом, мы можем построить карту старых позиционных ключей и новых позиционных ключей, а затем использовать array_multisort, чтобы отсортировать их по месту и отсортировать соответствующие массивы в том же порядке.
<?php
$data = array(
"title" => array("title 1", "title 2", "title 3", "title 4", "title 5", "title 6"),
"article" => array("01", "02", "03", "04", "05", "06")
);
$new_order = ["03", "01", "04", "02"];
$old_order = $data['article'];
// Build a map of before and after key positions.
foreach($old_order as $k => $value) {
$key = array_search($value, $new_order);
if($key === false) // No positional change.
$key = $k;
$map[$k] = $key; // old position -> new position
}
array_multisort($map, $data['title'], $data['article']);
var_export($data);
Вывод:
array (
'title' =>
array (
0 => 'title 3',
1 => 'title 1',
2 => 'title 4',
3 => 'title 2',
4 => 'title 5',
5 => 'title 6',
),
'article' =>
array (
0 => '03',
1 => '01',
2 => '04',
3 => '02',
4 => '05',
5 => '06',
),
)