многомерный массив в PHP

#php #php-7

#php #php-7

Вопрос:

     <?php
$userData = [
    [
        "UID" => "5f10482574d83d4b726fe5",
        "name" => "Yug Gill",
        "orgID" => "5f10481d74d83d4b726",
        "imageURL" => "female.png"
    ]
];

$userProductsData = [
    [
    "UPID" => "5f10482574d83d4b6fe007",
    "UID" => "5f10482574d83d4b726fe5",
    ]
];
$userDetailsResult = [];
foreach ($userData as $key => $value) {
    $userData[$key]["UPID"] = $userProductsData[$value["UID"]] ?? [];
}
  

Ожидаемый результат

 $userData = [
    [
        "UID" => "5f10482574d83d4b726fe5",
        "name" => "Yug Gill",
        "orgID" => "5f10481d74d83d4b726",
        "imageURL" => "female.png",
        "UPID" => "5f10482574d83d4b6fe007"
    ]
];
  

у меня есть два массива, UID общие для обоих массивов, теперь я хочу взять UPID из $userProductsData и вставить в $userData , я пытался работать неправильно, пожалуйста, кто-нибудь обновит мой код, пожалуйста
?>

Комментарии:

1. $userProductsData[$value["UID"]] становится $userProductsData['5f10482574d83d4b726fe5'] , и в этом массиве нет элемента по этому ключу.

2. выполните каждый цикл $userProductsData , затем внутри каждого цикла $userData , затем используйте if

3. Почему $userDetailsResult = []; ?

Ответ №1:

Попробуйте это.

 
$userData = [
    [
        "UID" => "5f10482574d83d4b726fe5",
        "name" => "Yug Gill",
        "orgID" => "5f10481d74d83d4b726",
        "imageURL" => "female.png"
    ]
];

$userProductsData = [
    [
    "UPID" => "5f10482574d83d4b6fe007",
    "UID" => "5f10482574d83d4b726fe5",
    ]
];
$userDetailsResult = [];

foreach ($userProductsData as $key => $value) {
    $userData[$key]["UPID"] = $value['UPID'];
   
}

print_r($userData);

  

Комментарии:

1. в одном цикле мы не можем этого достичь?

2. Что вы подразумеваете под одиночным циклом? Это из-за 2 циклов foreach? Если это так, вы действительно можете удалить первый цикл foreach.

Ответ №2:

Ваш $userProductsData — это обычный массив, он имеет индексы 0, 1, 2 и т.д… Затем вы пытаетесь получить элемент из этого массива с помощью строкового ключа "5f10482574d83d4b726fe5" .

$userProductsData должен быть такой ключевой массив:

 $userProductsData = [
    "5f10482574d83d4b726fe5" => [
        "UPID" => "5f10482574d83d4b6fe007",
        "UID" => "5f10482574d83d4b726fe5",
    ],
];
  

Затем вы можете получить элемент из этого массива по ключу "5f10482574d83d4b726fe5" .