PHP вернуть результат в другой группе - PullRequest
3 голосов
/ 08 июня 2011

все

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

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

$groupA = range(1, 5)

$groupB = range(6, 10)

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

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

Спасибо

Ответы [ 4 ]

4 голосов
/ 08 июня 2011

Вы можете использовать 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 находит все общие элементы, и вам это не нужно.

0 голосов
/ 08 июня 2011
$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);      
}

Посмотреть

0 голосов
/ 08 июня 2011

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

0 голосов
/ 08 июня 2011

Вы имеете в виду что-то подобное?

$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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...