я хочу получить доступ к данным внутри этого массива, чтобы сделать сравнение на немPHP: лучший способ, чем эти вложенные циклы?
$roomSensors =
Array
(
[maple] => Array
(
[room1] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[room2] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
)
)
я хочу, чтобы сравнить массив чисел, как это:
$sensorsInHit =
Array
(
[0] => 3
[1] => 1
[2] => 2
)
к массивам «комната» в первый массив
heres the loop, который я использовал для этого, он работает, но я думаю, что его вид уродливый и длинный.
// each 'ward' has an array of 'rooms'
foreach ($roomSensors as $ward => $rooms) {
// looping through each room in the rooms array
// the values are arrays of bluetooth sensor ids
foreach ($rooms as $room => $sensors){
// at this point i would like to just compare
// the sensorsInHit array to the $sensors array
// but i couldnt find a function that allows
// to see if one of the values in one array
// is equal to one of the values in another array
// so i just loop through the array and compare
// and compare single values to the array
foreach ($sensorsInHit as $sensor){
if (in_array($sensor, $sensors)){
// do loads of stuff
break;
}
}
break;
}
}
раскомментирован
foreach ($roomSensors as $ward => $rooms) {
foreach ($rooms as $room => $sensors){
foreach ($sensorsInHit as $sensor){
if (in_array($sensor, $sensors)){
// do loads of stuff
break;
}
}
break;
}
}
я знаю, что они не являются массивными массивами значений и не принимают много времени, чтобы перебрать, но я хотел бы знать, если есть более чистый способ сделать это?
благодарит за любую помощь!
Рекурсия - это ответ –
Это может быть лучший вопрос, который вы можете задать на [Code Review SE] (http://codereview.stackexchange.com/). – andrewgu
Может быть, array_diff помогает ... вы посмотрели? – pecci