PHP Результат возврата в другой группе

все

У меня есть набор данных типа 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

то я разделяю эти данные на 2 группы, которые

$groupA = range(1, 5)
$groupB = range(6, 10)

Например, у меня есть $data = array(1, 4), и он вернет это в группу A. Аналогично, $data = array(7,8), он вернется ко мне Group B.

Итак, как я могу написать script, чтобы $data = array(1, 4, 6, 7) вернуть мне группу A и группу B?

Спасибо

4 ответа

Вы можете использовать array_intersect:

$groupA = range(1, 5);
$groupB = range(6, 10);
$data = array(1, 4, 6, 7);
$foundGroups = array();
if(array_intersect($data, $groupA))
 $foundGroups[] = 'A';
if(array_intersect($data, $groupB))
 $foundGroups[] = 'B';
print_r($foundGroups);

Обратите внимание, что пустой массив оценивается как false, в то время как один, по крайней мере, с одним элементом оценивает true.

Предупреждение. Если вам нужно работать с большим количеством групп со многими элементами, вы можете использовать ручной подход и остановиться при обнаружении первого общего элемента. array_intersect находит все общие элементы, и вам это действительно не нужно.


Попытайтесь использовать array_intersect с каждой группой... если пересечение не равно null, это означает, что некоторые элементы находятся в этой группе...


Вы имеете в виду что-то вроде этого?

$data = array(1, 4, 6, 7)
$groupA = array();
$groupB = array();
foreach ((array) $data as $value) {
 if ($value < 6) {
 $groupA[] = $value;
 } else {
 $groupB[] = $value;
 }
}

Greetz,

XpertEase


$data = range(1,9);
$groupA = array_filter($data, "less");
$groupB = array_filter($data, "more");
function less ($v) {
 return $v < 6;
}
function more ($v) {
 return ! less($v); 
}

Посмотрите

licensed under cc by-sa 3.0 with attribution.