21,873
社区成员




$s = 'V';
$t = 'M';
$loop = count($d);
while($loop-- && $d[$s] != $t) {
echo "$s=>{$d[$s]} - ";
$s = $d[$s];
}
echo "\$d[$s]:{$d[$s]}";
V=>Q - Q=>L - L=>C - C=>I - I=>G - G=>S - S=>F - F=>T - T=>V - V=>Q - Q=>L - L=>C - C=>I - I=>G - G=>S - S=>F - F=>T - T=>V - V=>Q - Q=>L - L=>C - C=>I - I=>G - G=>S - S=>F - F=>T - $d[T]:V
/*
你的问题描述的比较宽泛,但依然能看到这是一个图的遍历问题
为了便于说明,我把问题简化成了字母配对
*/
srand(0); //固定的随机数种子,可使数据再现
//构造数据
$t = str_split('ABCDEFGHIJKLMNOPQRSTUVWXYZ');
shuffle($t);
$a = $t;
shuffle($t);
$b = $t;
$d = array_combine($a, $b);
print_r($d); //看一下
foreach($d as $k=>$v) {
echo "$k => ";
while($d[$v] != $k) {
echo "$v ";
$v = $d[$v];
}
echo "$v [{$d[$v]}]\n";
}
Array
(
[V] => Q
[X] => M
[Q] => L
[A] => X
[K] => Z
[O] => A
[S] => F
[U] => B
[B] => U
[C] => I
[Z] => W
[M] => Y
[N] => E
[W] => R
[I] => G
[R] => D
[T] => V
[G] => S
[L] => C
[P] => H
[Y] => O
[D] => K
[F] => T
[H] => J
[E] => N
[J] => P
)
V => Q L C I G S F T [V]
X => M Y O A [X]
Q => L C I G S F T V [Q]
A => X M Y O [A]
K => Z W R D [K]
O => A X M Y [O]
S => F T V Q L C I G [S]
U => B [U]
B => U [B]
C => I G S F T V Q L [C]
Z => W R D K [Z]
M => Y O A X [M]
N => E [N]
W => R D K Z [W]
I => G S F T V Q L C [I]
R => D K Z W [R]
T => V Q L C I G S F [T]
G => S F T V Q L C I [G]
L => C I G S F T V Q [L]
P => H J [P]
Y => O A X M [Y]
D => K Z W R [D]
F => T V Q L C I G S [F]
H => J P [H]
E => N [E]
J => P H [J]