2015-03-19 6 views
2

У меня есть многомерный массив, используемый в качестве шаблона, а затем еще один многоадресный со смешанными значениями. Я попытался разобраться смешанный массив выглядеть как массив шаблонов, но до сих пор не увенчались успехом для массива в настоящее времяСортировка массива с использованием шаблона

шаблоне:

$routes = [['A','B','C','D'],['A','C','E','F'],['D','O','A','F']] 
$points = [['C','A','A','B','C','C'], ['E','E','C','A'],['F','O','O','A','A']] 

Массив маршрутов является массив шаблонов. я пытался что-то вроде этого:

for ($i=0;$i<=$idx;$i++) { 
    $points1 = usort($points[$i], function($a, $b) use ($routes) { 
     return array_search($a, $routes[$i]) - array_search($b, $routes[$i]); 
    });   
} 

где $idx представляет длину массива. Может ли кто-нибудь указать мне в правильном направлении?

ответ

1

Вы должны использовать array_keys вместо array_search и отправить ключ текущего $ точки вы лечите к обратному вызову:

$routes = [['A','B','C','D'],['A','C','E','F'],['D','O','A','F']]; 
$points = [['C','A','A','B','C','C'], ['E','E','C','A'],['F','O','O','A','A']]; 

foreach ($points as $key => &$point) { 
    usort ($point, function ($a, $b) use ($key, $routes) { 
    return array_keys($routes[$key], $a) > array_keys($routes[$key], $b); 
    }); 
} 

print_r($points); 

Выход:

Array 
(
    [0] => Array 
     (
      [0] => A 
      [1] => A 
      [2] => B 
      [3] => C 
      [4] => C 
      [5] => C 
     ) 

    [1] => Array 
     (
      [0] => A 
      [1] => C 
      [2] => E 
      [3] => E 
     ) 

    [2] => Array 
     (
      [0] => O 
      [1] => O 
      [2] => A 
      [3] => A 
      [4] => F 
     ) 

) 

Вы были не так далеко, хотя. ;)

+0

Спасибо за ответ, но код еще не в порядке. Он не заказывает результаты по мере необходимости. – rosuandreimihai

+0

@rosuandreimihai Uh, тогда вам, возможно, придется добавить некоторые данные о ожидаемом выходе. Вы не хотите заказывать очки с соответствующим маршрутом? – Sugar

+0

Да, но результат, данный мне, выглядит иначе, чем ваш: [['C', 'A', 'A', 'B', 'C', 'C'], ['E', 'E', 'C', 'A'], ['F', 'O', 'O', 'A', 'A']] – rosuandreimihai