Получить данные из 2-го массива и положить значения в массиве 1 - PullRequest
0 голосов
/ 10 октября 2018

У меня следующая ситуация, и я не могу найти простой способ сделать это.

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

1)

Array (
[0] => Array
    (
        [FirstName] => Tom
        [LastName] => Siemens
        [Id] => 10300
    )

[1] => Array
    (
        [FirstName] => Sam
        [LastName] => Tailor
        [Id] => 10301
    )

2)

Array
    (
    [0] => Array
           (
            [Type] => Invoice
            [Number] => 6344394
            [Project] => Array
                (
                    [Name] => Test Project 1
                    [ResponsibleUserId] => 10300
                    [Id] => 498
                    [ResponsibleUser] => 
                )

        )
    [1] => Array (
            [Type] => Invoice
            [Number] => 6345555
            [Project] => Array
                (
                    [Name] => Test Project 2
                    [ResponsibleUserId] => 10301
                    [Id] => 499
                    [ResponsibleUser] => 
                )

        )

Что может быть лучшим подходом для получения «FirstName LastName» из первого массива, зависит от идентификатора, который должен равняться идентификатору проекта из второго массива, и помещать эти значения во второй массив -> Project-> ResponsibleUser?

Результат, который я ищу, следующий:

Final Array)

Array (
    [0] => Array
           (
            [Type] => Invoice
            [Number] => 6344394
            [Project] => Array
                (
                    [Name] => Test Project 1
                    [ResponsibleUserId] => 10300
                    [Id] => 498
                    [ResponsibleUser] => Tom Siemens
                )

        )
    [1] => Array (
            [Type] => Invoice
            [Number] => 6345555
            [Project] => Array
                (
                    [Name] => Test Project 2
                    [ResponsibleUserId] => 10301
                    [Id] => 499
                    [ResponsibleUser] => Sam Tailor
                )

        )

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

Создать новый массив из array1 с идентификатором пользователя в качестве ключа:

$newArray1 = array();
foreach($array1 as $values)
{
    $newArray1[$values['Id']] = $values['FirstName']." ".$values['LastName'];
}

Тогда

foreach($array2 as $index => $val)
{
    $array2[$index]['Project']['ResponsibleUser'] = $newArray1[$val['Project']['ResponsibleUserId'];
}
0 голосов
/ 10 октября 2018
<?php

$names[0] = array("FirstName" => "Tom", "LastName" => "Siemens", "Id" => 10300);
$names[1] = array("FirstName" => "Sam", "LastName" => "Tailor", "Id" => 10301);

$projects[0] = array("Type" => "Invoice", "Number" => "6344394", "Project" => Array("Name" => "Test Project 1", "ResponsibleUserId" => 10300, "Id" => 498, "ResponsibleUser" => ""));
$projects[1] = array("Type" => "Invoice", "Number" => "6345555", "Project" => Array("Name" => "Test Project 2", "ResponsibleUserId" => 10301, "Id" => 499, "ResponsibleUser" => ""));

foreach ($projects as $pid => $project) {
    foreach ($names as $nid => $name) {
        if ($project["Project"]["ResponsibleUserId"] == $name["Id"]) {
            $projects[$pid]["Project"]["ResponsibleUser"] = $name["FirstName"].' '.$name["LastName"];
        };
    };
};


print_r($projects);

?>
0 голосов
/ 10 октября 2018

Если вы начнете с индексации первого массива по идентификатору, используя array_column() ...

$idList = array_column($array1, null, "Id");

Затем вы можете просто перебрать второй массив и выбрать имякаждый раз и обновляйте его ...

foreach (array2 as &$project ) {
    $id = $project["Project"]["ResponsibleUserId"];
    $project["Project"]["ResponsibleUser"] = $idList[$id]["FirstName"]." ".$idList[$id]["LastName"];
}

Используйте &$project, поскольку это позволит вам обновить исходное значение, которое соответствует вашему.

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