PHP条件多维值比较

PHP条件多维值比较,php,multidimensional-array,Php,Multidimensional Array,我需要帮助比较一个将被分配到多维数组中的值和最后一个分配值的几个值 首先,阵列如下所示: $schedule = array( 0 => array(//day 0 => array(//session 1 0 => array( //room 405 0 => "5" //id from arr2 ), 1 =

我需要帮助比较一个将被分配到多维数组中的值和最后一个分配值的几个值

首先,阵列如下所示:

$schedule = array(
    0 => array(//day
        0 => array(//session 1
                0 => array( //room 405
                    0 => "5" //id from arr2 
                ),
                1 => array( //room 406
                    0 => "7"  
                ), 
                2 => array( //room 407
                    0 => ""   
                ),
                3 => array( //room 408
                    0 => ""  
                ) 
        )
)

$idAndNeighbour = array(
     0 => array(
         'id'=>5,
         'neighbour1' => 4,
         'neighbour5' => 22,     
     ),
     1 => array(
         'id'=>7,
         'neighbour1' => 9,
         'neighbour5' => 24,     
     ),
     2 => array(
         'id'=>9,
         'neighbour1' => 7,
         'neighbour5' => 23,     
     ),
     3 => array(
         'id'=>14,
         'neighbour1' => 8,
         'neighbour5' => 26,     
     )
)
下一个要分配给$schedule的id是9,因此我需要获取最后一个分配的id,查看$IDandNeighbor中的哪个id与最后一个分配的id匹配,并将id 9与最后一个分配的id的邻居进行比较,如果9与最后一个分配的id的邻居中的任何一个匹配,则跳过9,然后下一个要分配的id是14

我如何解决这个问题


注意:我不应该只在$IDandNexture中进行比较,因为它会不断跳过id 9和与邻居值匹配的其他id,如果您询问如何查找9是否在叶节点中,则需要

以下是您的数据示例:

$schedule = array(
    0 => array(//day
        0 => array(//session 1
                0 => array( //room 405
                    0 => "5" //id from arr2 
                ),
                1 => array( //room 406
                    0 => "7"  
                ), 
                2 => array( //room 407
                    0 => ""   
                ),
                3 => array( //room 408
                    0 => ""  
                ) 
        )
    )
);

$allids = array();

array_walk_recursive($schedule, function ($value, $key) use (&$allids) {
                                    if ($value) $allids[] = $value;
                                });
var_export($allids);

if (array_search(9, $allids) === false) {
    echo "\nIt's not there.\n";
} else echo "\nIt's there.\n";
这将产生:

array (
  0 => '5',
  1 => '7',
)
It's not there.

这不完全是我想要的,这里有一个更详细的例子来说明我想要的:我认为这至少是你想要的,你只需要用它做更多。如果我今晚有时间,我会给你举个更好的例子。同时,您是否在试图避免在同一个会议中,或特别是最后一个会议中,在相邻的任何房间中增加九个房间?那么,即使是一个5岁的邻居,你也能增加9号房间吗?也许你是对的,是的,我试图避免在同一节课的任何相邻房间增加9号,因为问题是为什么这些id是讲师和课程的组合,所以如果是邻居,这意味着有一位讲师同时教授这两个id,因为一个讲师不能同时在两个房间,所以不应该出现在同一节课上。我要找一个更详细的例子:imgur.com/a/eJPPyCS