Я не уверен, ясно ли я понял ваш вопрос, но вам нужно либо:
Что позволит вам фильтровать ваш массив следующим образом:
// Reference is implicit (I've added & for you to see it)!!!
// Be careful not to change your data
functon filterCallback( SosumiDevice &$obj){
return $obj->deviceClass == 'MacBookPro';
}
Сортировка массивов, которые первыми являются MacBook
function usortCallback( SosumiDevice $a, SosumiDevice $b){
static $order = array(
'MacBookPro' => 1,
'FourthGen' => 2,
...
);
$oA = isset( $order[ $a->deviceClass]) ? $order[ $a->deviceClass] : -100;
$oB = isset( $order[ $b->deviceClass]) ? $order[ $b->deviceClass] : -100;
// Maybe reverse order of operands will be necessary
return $oA - $oB;
}
Это добавляет классы значений следующим образом:
MacBookPro => 1
FourGen => 2
Поэтому при добавлении таких параметров, как: MacBookPro, FourthGen
Он оценивается как: 1 - 2
, что возвращает -1
=> MacBookPro
должно быть раньше FourthGen
foreach
петля
Разделение устройств на группы в зависимости от типа устройства:
$groups = array();
foreach( $this->devices as $device){
if( !isset( $groups[ $device->deviceType])){
$groups[ $device->deviceType] = array( $device);
continue;
}
$groups[ $device->deviceType] = $device;
}
Вы можете добиться того же с фильтром массива, это будет более эффективно, если вам нужно получить все группы, array_filter
, когда вам нужен только один gruop.