如何过滤多维数组。 PHP

时间:2017-01-25 04:35:45

标签: php arrays multidimensional-array

我这里有一些令人困惑的问题。如果你不介意,请看看并帮忙。

假设我有这个多维数组,叫做$ 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反向路径。

提前谢谢你。

3 个答案:

答案 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";
       }
    }
}