TransWikia.com

Создать цепочку из элементов массива

Stack Overflow на русском Asked by tyzh on December 23, 2021

Есть два массива:

$correct = [                                                    
    ['first' => '148', 'last' => '002', 'num' => '1'],          
    ['first' => '155', 'last' => '156', 'num' => '2'],          
    ['first' => '975', 'last' => '148', 'num' => '1'],          
    ['first' => '156', 'last' => '157', 'num' => '2'],          
    ['first' => '002', 'last' => '155', 'num' => '2'],          
    ['first' => '051', 'last' => '978', 'num' => '2'],          
    ['first' => '157', 'last' => '051', 'num' => '2'],          
] ;                                                             
$incorrect = [
    ['first' => '156', 'last' => '157', 'num' => '2'],
    ['first' => '002', 'last' => '148', 'num' => '1'],
    ['first' => '155', 'last' => '156', 'num' => '2'],
    ['first' => '002', 'last' => '155', 'num' => '2'],
    ['first' => '051', 'last' => '978', 'num' => '2'],
    ['first' => '157', 'last' => '051', 'num' => '2'],
    ['first' => '148', 'last' => '975', 'num' => '1'],
] ;

С помощью php необходимо создать цепочку из элементов массива, так чтобы поле last текущей строки массива был равен поле first следующей строки массива, и так до конца массива.

При этом необходимо сортировать по убыванию по поле num.

И если есть разрыв цепочки то вывести его на экран, и дальше продолжить цепочку.

При выводе на экран нужно чтобы было:

// Если цепочка цельная [массив $correct]
first    last     num                                       
-----    -----    -----                                     
975      148      1                                         
148      002      1                                         
002      155      2                                         
155      156      2                                         
156      157      2                                         
157      051      2                                         
051      978      2 
// Если в цепочке есть разрыв [массив $incorrect]
first    last     num
-----    -----    ----- 
002      148      1
148      975      1
 * * *  Разрыв * * *   
002      155      2
155      156      2
156      157      2
157      051      2
051      978      2

Как бы должно получится змейка

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP