PHP условное многомерное сравнение значений - PullRequest
0 голосов
/ 23 мая 2018

Мне нужна помощь в сравнении значения, которое будет присвоено в многомерном массиве, с несколькими значениями, которые идут с последним присвоенным значением.

сначала массивы выглядят так:

$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, равен 9, поэтому мне нужно получить последний назначенный идентификатор, посмотреть, какой идентификатор в $ idAndNeighbour соответствует последнему назначенному идентификатору, и сравнить идентификатор 9 с соседом последнего назначенного идентификатора, если9 соответствует любому соседу последнего назначенного идентификатора, затем пропускается 9, а затем присваивается следующий идентификатор 14. 14. 1006 *

как мне решить эту проблему?

примечание: я не должен делать сравнение простовнутри $ idAndNeighbour, потому что он будет постоянно пропускать идентификатор 9 и другой идентификатор, который соответствует значению соседа

1 Ответ

0 голосов
/ 23 мая 2018

Если вы спрашиваете, как определить, находится ли 9 в ваших конечных узлах, вы хотите array_walk_recursive .

Вот пример с вашими данными:

$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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...