编辑代码

<?php 
// 有向图
$map = [
    0 => [0, 15, 13, 1],
    1 => [15, 0, 7, 10],
    2 => [13, 7, 0, 14],
    3 => [1, 10, 14, 0]
];

// 已找到最短路径数组
$s = [];

// 未找到最短路径数组
$t = [];

// 原点
$start = 0;

// 终点
$end = 3;

// 原点默认已知
$s[] = $start;

// 辅助临时数组 t
$t = [];

$Vj = $start;

// 循环从原点出发  所有【直达】顶点的路径
echo count($map);die;
for ($i = 0; $i < count($map), $i++){
    foreach ($map[$start] as $key => $value){
        if (in_array($key, $s)){
            continue;
        }
        // Vj作为中间顶点,路径是否缩短,是的话则修改值
        $tem = $s[$Vj] + $value;
        if (isset($t[$key]) && $tem < $t[$key]){
            $t[$key] = $tem;
        }else{
            $t[$key] = $value;
        }
    }

    $Vj = array_search(min($t), $t);
    $s[$Vj] = min($t);
    unset($t[$Vj]);

    var_dump($s);
}







// 找到最短的一个  看看经过它之后  原点到其他订单的距离是否有变短

// 如果变短了  则更换最短路径数组

// 全部找完,得出结论