Какой алгоритм не понятен, но ключевые слова: "пересортировать массив по моему алгоритму" - это одна из 2 функций:
php.net/uasort
php.net/uksort
------------------------------------
Если по новому ставится задача то легче сделать так:
1. выделяете ключевые слова (продам, продаётся, продажа"
2. выделяются вторые слова
3. склеиваются.
$keys = ["Продам", "Продаётся", "Продажа"];
$words = ["котлету", "ботинок", "семки"];
$groupSize = 3;
$amount = sizeof($keys)*sizeof($words);
$list = array_fill(0,$amount, "");
foreach ($keys as $group => $groupName) {
foreach ($words as $item => $word) {
$index = (($group+$item) * $groupSize + $group)%$amount;
$list[$index] = $groupName . ' ' . $word;
}
}
print_r($list);
Или, если вы хотите по частям, то например так:
/** Создаём список. важно что он имеет строгий формат */
$keys = ["Продам", "Продаётся", "Продажа"];
$words = ["котлету", "ботинок", "семки"];
$list = [];
foreach ($words as $wordId => $word) {
foreach ($keys as $groupId => $groupName) {
$list[] = $groupName . ' ' . $word;
}
}
// сортируем
$groupSize = 3;
$output = array_fill(0, sizeof($list), "");
foreach ($list as $id => $string) {
$group = floor($id/$groupSize);
$item = $id%$groupSize;
$index = (($group+$item) * $groupSize + $item)%sizeof($list);
$output[$index] = $string;
}
print_r($output);