bazilio2010
@bazilio2010
Мужчина

Как получить ключи в многомерном массиве у которых разные значения, но одинаковые ключи?

Есть примерно такой массив

Array
(
    [0] => Array
        (
            [title] => Чтение
            [value] => да
        )

    [1] => Array
        (
            [title] => Тип
            [value] => общий
        )

    [3] => Array
        (
            [title] => Чтение
            [value] => нет
        )
    [4] => Array
        (
            [title] => Тип
            [value] => общий
        )
)

Мне нужно получить ключи у которых разные значения, но одинаковые названия в данном примере это
чтение оно в первом случае да во втором нет, а тип проигнорировать.
Всю голову сломал, как это сделать
  • Вопрос задан
  • 585 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
В вашем массиве ключи - title и value, а значения - Чтение, Тип, да, нет, общий. Называйте вещи своими именами.
Ну а задача решается с помощью обхода массива и составления другого массива, где ключами уже будут Чтение и Тип, а значениями - да, нет, общий. Просто на каждом шаге проверяете, если в новом массиве ещё нет такого ключа, добавляете пару ключ/значение, если ключ есть и значение не совпадает - выводите.
Ответ написан
Комментировать
miraage
@miraage
Старый прогер
$input = [
    [
        'title' => 'Чтение',
        'value' => 'да',
    ],

    [
        'title' => 'Тип',
        'value' => 'общий',
    ],

    [
        'title' => 'Чтение',
        'value' => 'нет',
    ],
    [
        'title' => 'Тип',
        'value' => 'общий',
    ],
];

function get_unique_titles(array $input)
{
    $tmp = [];
    $result = [];

    foreach ($input as $row) {
        $tmp[$row['title']][] = $row['value'];
    }

    foreach ($tmp as $title => $values) {
        if ($values == array_unique($values)) {
            $result[] = $title;
        }
    }

    return $result;
}

var_dump(get_unique_titles($input));

array(1) {
  [0] =>
  string(12) "Чтение"
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы