我这里有一些令人困惑的问题。如果你不介意,请看看并帮忙。
假设我有这个多维数组,叫做$ array。
[1] => Array
(
[3] => 2
[2] => 5
[4] => 4
)
[3] => Array
(
[1] => 2
)
[2] => Array
(
[1] => 5
)
该数组表示两个节点之间的路径。我试图在这里实现dijkstra algorhitm。什么时候
$array[1][2] = 5
这意味着节点1到节点2之间的距离是5,依此类推。
我要问的是,如何检测到数组$array[1][4] = 4
没有像上面例子那样的$array[4][1] = 4
反向路径。
提前谢谢你。
答案 0 :(得分:3)
按照:
$temp = array();
$array = array('1' => Array
(
'3' => 2,
'2' => 5,
'4' => 4
),
'3' => Array
(
'1' => 2
),
'2' => Array
(
'1' => 5
));
foreach ($array as $key => $value)
{
foreach ($value as $k => $v)
{
if($array[$key][$k] == isset($array[$k][$key]))
{
echo $key . 'to' . $k . 'reverse path available';
echo "<br>";
}
}
}
答案 1 :(得分:1)
喜欢这个。在另一个foreach里面找到foreach并根据键进行检查。
$array = array('1'=>array('3'=>2),'3'=>array('1'=>2));//assumed reversed array
//print_r($array);
foreach($array as $key=>$value){
foreach($value as $k=>$v){
if($array[$key][$k] == $array[$k][$key]){
echo "Reverse at:array[".$key."][".$k."]".PHP_EOL;
continue;
}
}
}
输出:
Reverse at:array[1][3]
Reverse at:array[3][1]
答案 2 :(得分:0)
对于该数组,您必须添加嵌套for循环..
for($i=0;$i<count($your_array);$i++)
{
for($j=0;$j<count($your_array[$i]);$j++)
{
if(isset($your_array[$i][$j]) && isset($your_array[$j][$i]) && $your_array[$i][$j]==$your_array[$j][$i])
{
echo "same distance";
}
else
{
echo "different distance or path not available";
}
}
}