php Вопрос о многомерном массиве - PullRequest
1 голос
/ 18 февраля 2011

Итак, у меня есть массив, подобный следующему:

Array
(
    [0] => Array
        (
            [user_id] => 684
            [sec_id] => 2
            [rank_id] => 1
            [rank] => usr

        )

    [1] => Array
        (
            [user_id] => 693
            [sec_id] => 3
            [rank_id] => 5
            [rank] => usr

        )
)

И у меня есть другой массив, подобный этому

Array
(
    [0] => 2
    [1] => 7
    [2] => 27
)

Я хочу, чтобы значение второго массива добавлялось в конце каждого массива 1-го массива, и оно должно быть умножено. Я имею в виду, если у меня есть 100 массивов в первом массиве и 3 элемента во втором массиве, у меня должно быть 300 в результирующем массиве.

Взяв пример вышеизложенного, я хотел бы получить что-то следующее:

user_id | sec_id | rank_id | rank | menu_id
684 |        2 |       1 |    usr |    2
684 |        2 |       1 |    usr |    7
684 |        2 |       1 |    usr |   27
693 |        3 |       5 |    usr |    2
693 |        3 |       5 |    usr |    7
693 |        3 |       5 |    usr |   27

Я пытался использовать следующую функцию, но она не работает.

function getR($arr_one,$arr_two) {
    foreach ($arr_one as $k=>&$v) {
        foreach ($arr_two as $x=>&$y) { $v['menu_id'] = $y;  }
    }
    return $arr_one; 
}

Это просто создание массива, подобного этому:

user_id | sec_id | rank_id | rank | menu_id
684 |        2 |       1 |    usr |   27
693 |        3 |       5 |    usr |   27

Значит, это просто добавление menu_id в конце каждого элемента первого массива, но не умножение. Любая идея, я наверняка что-то упускаю.

Спасибо, ребята.

Ответы [ 3 ]

2 голосов
/ 18 февраля 2011
function getR($arr_one,$arr_two) {
    $new_arr = array();
    foreach ($arr_one as $k=>$v) {
        foreach ($arr_two as $x=>$y) {
            $this_item = $v;
            $this_item['menu_id'] = $y;
            $new_arr[] = $this_item;
        }
    }
    return $new_arr; 
}
1 голос
/ 18 февраля 2011

Я не собираюсь спрашивать ... но попробуйте это:

<?php 

function crazy ($arr1,$arr2) {
    foreach ($arr1 as $key=>$value) {
        foreach ($arr2 as $value2) {
        $nvalue=$value;
        $nvalue[]=$value2;
        $new[]=$nvalue;
        }
    }
return $new;
}

$arr1=array(array('user'=>1,'dude'=>2),array('user'=>2,'dude'=>3));
$arr2=array(2,7,27);

print_r(crazy($arr1,$arr2));

это тоже проверено, http://www.ideone.com/Of126

0 голосов
/ 18 февраля 2011

Без тестирования (eek!) Я представляю что-то вроде этого:

function getR( $arr_one, $arr_two )
{
    $second_key = 0;
    foreach ( $arr_one as $k => &$v )
    {
        $v['menu_id'] = $second_key++;
        if ( 3 == $second_key ) $second_key = 0;
    }
    return $arr; 
}

Предположительно, вы передаете первый массив по ссылке?Не уверен, что $arr что ты возвращаешь, хотя ...

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