PHP объединяет / переписывает массивы в один по условию

0

Я хочу объединить их в один, где значения равны 1.

Пример:

У меня есть 3 массива:

$array1 = [1,0,0,1,0];
$array2 = [0,0,0,1,0];
$array3 = [0,1,0,0,0];

Существует "n" количество массивов.

Поэтому желаемый вывод будет:

$array = [1,1,0,1,0]

Более детально:

Это моя основная идея слияния пользовательских разрешений. Каждый массив представляет группу, частью которой является пользователь, и каждый ключ в массиве является разрешением. Каждое значение массива представляет true/false, если пользователь имеет разрешение.

Спасибо за ваш код/​​предложения/идеи.

  • 1
    Как насчет некоторых foreach . Серьезно - это 2 строки кода (фактически 3, если вы посчитаете инициализацию массива результатов)
  • 1
    «Каждое значение массива true / false», [1,0,0,1,0] . Целые числа и логические значения - это 2 разных типа.
Показать ещё 8 комментариев
Теги:
arrays
merge

1 ответ

1
Лучший ответ

Это должно сработать для вас:

<?php

    $array1 = [1,0,0,1,0];
    $array2 = [0,0,0,1,0];
    $array3 = [0,1,0,0,0];
    $result = array();  
    $n = 3; $tmp = 0;
    $result = array();

    for($count = 0; $count < count($array1); $count++) {    
        for($i = 1; $i <= $n; $i++)
            $tmp = ${"array" . $i}[$count] || $tmp;
        $result[] = $tmp;
    }

    var_dump($result);

?>

Вывод:

array(5) { [0]=> bool(true) [1]=> bool(true) [2]=> bool(false) [3]=> bool(true) [4]=> bool(false) }
  • 1
    Это на самом деле забавно: входные массивы с целыми числами, которые на самом деле являются логическими значениями, и в результате представляют собой строки, представляющие целые числа, которые на самом деле также являются логическими значениями :-D
  • 0
    И теперь это еще более противоречиво: результат - либо логическое значение true, либо целое число 0.
Показать ещё 13 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню