gpt4 book ai didi

php - 始终使用值获取 $media

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:23:01 24 4
gpt4 key购买 nike

我有这段代码可以在数组内部移动并构建一个正确的 JSON 响应,但是有些东西不起作用,因为 $media 总是得到相同的值,不应该是因为在第二次迭代中没有$媒体。我的逻辑有什么问题?有什么建议吗?

代码片段

for ($i = 0; $i < count($entEmail); $i++) {
$entMedia = $em->getRepository('AppBundle:Representative')->getAllEmailsMedia($entEmail[$i]['id']);

for ($j = 0; $j < count($entMedia); $j++) {
$media[] = [
"media_id" => $entMedia[$j]['id'],
"title" => $entMedia[$j]['title'],
"description" => $entMedia[$j]['description'],
"thumbnail_url" => $entMedia[$j]['thumbnail_url'],
"viewedAt" => $em->getRepository('AppBundle:Representative')->getMediaViewedAt($entEmail[$i]['id'], $entMedia[$j]['id']) ? $em->getRepository('AppBundle:Representative')->getMediaViewedAt($entEmail[$i]['id'], $entMedia[$j]['id']) : "0000-00-00 00:00:00"
];
}

$response[] = [
"id" => $entEmail[$i]['id'],
"rep_id" => $entEmail[$i]['reps_id'],
"target_id" => $entEmail[$i]['targets_id'],
"brands_id" => $entEmail[$i]['brands_id'],
"brand_name" => $entEmail[$i]['name'],
"messages_id" => $entEmail[$i]['messages_id'],
"message_text" => $entEmail[$i]['message_text'],
"media" => $media,
"category" => $entEmail[$i]['category'],
"createdAt" => $entEmail[$i]['createdAt'],
"openedAt" => $em->getRepository('AppBundle:Representative')->getEmailOpenetAt($entEmail[$i]['id']) ? $em->getRepository('AppBundle:Representative')->getEmailOpenetAt($entEmail[$i]['id']) : "0000-00-00 00:00:00",
"viewedAt" => $em->getRepository('AppBundle:Representative')->getEmailViewedAt($entEmail[$i]['id']) ? $em->getRepository('AppBundle:Representative')->getEmailViewedAt($entEmail[$i]['id']) : "0000-00-00 00:00:00"
];
}

当前响应

[
{
"id": "1",
"rep_id": "1",
"target_id": "1",
"brands_id": "1",
"brand_name": "Combivent Respimat",
"messages_id": "1",
"message_text": "Dear [HCP Name], Thank you for taking the time to speak with me today. Based on our discussion, I’ve attached additional materials about COMBIVENT RESPIMAT. I look forward to speaking with you again in the near future.",
"media": [
{
"media_id": "1",
"title": "Abbreviated Visual Aid",
"description": "Provides information on key features of COMBIVENT RESPIMAT, including safety and efficacy information, the RESPIMAT Inhaler.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/abbreviated_vis_aid.png",
"viewedAt": "2015-05-24 23:27:41"
},
{
"media_id": "2",
"title": "Solutions Plus™ HCP Flashcard",
"description": "Information about the Solutions Plus phone line that offers support services and education to both patients and HCPs.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/sp_flash_card.png",
"viewedAt": "2015-05-24 23:27:42"
},
{
"media_id": "3",
"title": "Solutions Plus™ Patient Flashcard",
"description": "A detailed list of the services Solutions Plus offers to patients that you can print and give to patients together with a prescription for COMBIVENT RESPIMAT.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/sp_patient_card.png",
"viewedAt": "0000-00-00 00:00:00"
},
{
"media_id": "4",
"title": "Abbreviated Instructions for Use",
"description": "A step-by-step patient guide listing the steps for COMBIVENT RESPIMAT preparation, priming, and dosing, with information on safety and important features of COMBIVENT RESPIMAT.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/patient_tearsheet.png",
"viewedAt": "0000-00-00 00:00:00"
},
{
"media_id": "5",
"title": "Patient Brochure",
"description": "A patient-friendly starter guide to the safety, benefits, and use of COMBIVENT RESPIMAT.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/patient_brochure.png",
"viewedAt": "0000-00-00 00:00:00"
},
{
"media_id": "6",
"title": "RESPIMAT Inhaler Training Video",
"description": "A step-by-step instructional video that details how to prepare, prime, and use the RESPIMAT Inhaler for daily dosing.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/ihi_video.png",
"viewedAt": "0000-00-00 00:00:00"
}
],
"category": "REP",
"createdAt": "2015-05-24 12:00:00",
"openedAt": "2015-05-24 23:27:40",
"viewedAt": "2015-05-24 22:54:08"
},
{
"id": "2",
"rep_id": "1",
"target_id": "1",
"brands_id": "1",
"brand_name": "Combivent Respimat",
"messages_id": "5",
"message_text": "I would like to schedule a live representative visit.",
"media": [
{
"media_id": "1",
"title": "Abbreviated Visual Aid",
"description": "Provides information on key features of COMBIVENT RESPIMAT, including safety and efficacy information, the RESPIMAT Inhaler.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/abbreviated_vis_aid.png",
"viewedAt": "2015-05-24 23:27:41"
},
{
"media_id": "2",
"title": "Solutions Plus™ HCP Flashcard",
"description": "Information about the Solutions Plus phone line that offers support services and education to both patients and HCPs.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/sp_flash_card.png",
"viewedAt": "2015-05-24 23:27:42"
},
{
"media_id": "3",
"title": "Solutions Plus™ Patient Flashcard",
"description": "A detailed list of the services Solutions Plus offers to patients that you can print and give to patients together with a prescription for COMBIVENT RESPIMAT.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/sp_patient_card.png",
"viewedAt": "0000-00-00 00:00:00"
},
{
"media_id": "4",
"title": "Abbreviated Instructions for Use",
"description": "A step-by-step patient guide listing the steps for COMBIVENT RESPIMAT preparation, priming, and dosing, with information on safety and important features of COMBIVENT RESPIMAT.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/patient_tearsheet.png",
"viewedAt": "0000-00-00 00:00:00"
},
{
"media_id": "5",
"title": "Patient Brochure",
"description": "A patient-friendly starter guide to the safety, benefits, and use of COMBIVENT RESPIMAT.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/patient_brochure.png",
"viewedAt": "0000-00-00 00:00:00"
},
{
"media_id": "6",
"title": "RESPIMAT Inhaler Training Video",
"description": "A step-by-step instructional video that details how to prepare, prime, and use the RESPIMAT Inhaler for daily dosing.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/ihi_video.png",
"viewedAt": "0000-00-00 00:00:00"
}
],
"category": "TARGET",
"createdAt": "2015-05-24 23:27:40",
"openedAt": "0000-00-00 00:00:00",
"viewedAt": "0000-00-00 00:00:00"
}
]

预期响应

[
{
"id": "1",
"rep_id": "1",
"target_id": "1",
"brands_id": "1",
"brand_name": "Combivent Respimat",
"messages_id": "1",
"message_text": "Dear [HCP Name], Thank you for taking the time to speak with me today. Based on our discussion, I’ve attached additional materials about COMBIVENT RESPIMAT. I look forward to speaking with you again in the near future.",
"media": [
{
"media_id": "1",
"title": "Abbreviated Visual Aid",
"description": "Provides information on key features of COMBIVENT RESPIMAT, including safety and efficacy information, the RESPIMAT Inhaler.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/abbreviated_vis_aid.png",
"viewedAt": "2015-05-24 23:27:41"
},
{
"media_id": "2",
"title": "Solutions Plus™ HCP Flashcard",
"description": "Information about the Solutions Plus phone line that offers support services and education to both patients and HCPs.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/sp_flash_card.png",
"viewedAt": "2015-05-24 23:27:42"
},
{
"media_id": "3",
"title": "Solutions Plus™ Patient Flashcard",
"description": "A detailed list of the services Solutions Plus offers to patients that you can print and give to patients together with a prescription for COMBIVENT RESPIMAT.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/sp_patient_card.png",
"viewedAt": "0000-00-00 00:00:00"
},
{
"media_id": "4",
"title": "Abbreviated Instructions for Use",
"description": "A step-by-step patient guide listing the steps for COMBIVENT RESPIMAT preparation, priming, and dosing, with information on safety and important features of COMBIVENT RESPIMAT.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/patient_tearsheet.png",
"viewedAt": "0000-00-00 00:00:00"
},
{
"media_id": "5",
"title": "Patient Brochure",
"description": "A patient-friendly starter guide to the safety, benefits, and use of COMBIVENT RESPIMAT.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/patient_brochure.png",
"viewedAt": "0000-00-00 00:00:00"
},
{
"media_id": "6",
"title": "RESPIMAT Inhaler Training Video",
"description": "A step-by-step instructional video that details how to prepare, prime, and use the RESPIMAT Inhaler for daily dosing.",
"thumbnail_url": "https://pdone.s3.amazonaws.com/thumbnail/ihi_video.png",
"viewedAt": "0000-00-00 00:00:00"
}
],
"category": "REP",
"createdAt": "2015-05-24 12:00:00",
"openedAt": "2015-05-24 23:27:40",
"viewedAt": "2015-05-24 22:54:08"
},
{
"id": "2",
"rep_id": "1",
"target_id": "1",
"brands_id": "1",
"brand_name": "Combivent Respimat",
"messages_id": "5",
"message_text": "I would like to schedule a live representative visit.",
"media": [],
"category": "TARGET",
"createdAt": "2015-05-24 23:27:40",
"openedAt": "0000-00-00 00:00:00",
"viewedAt": "0000-00-00 00:00:00"
}
]

最佳答案

在第一个循环的末尾,添加 unset($media); 这会为第一个循环的每次迭代重置媒体变量。 PHP 是一种极其松散的语言,一旦您创建了一个变量,它就会存在,而不管范围如何(在大多数情况下)。所以第二次在第一个循环中,媒体变量仍然存在,里面有一些数据,代码将该变量设置为第二个数组中的索引。

    for ($i = 0; $i < count($entEmail); $i++) {
$media = [];
$entMedia = $em->getRepository('AppBundle:Representative')->getAllEmailsMedia($entEmail[$i]['id']);

for ($j = 0; $j < count($entMedia); $j++) {
$media[] = [
"media_id" => $entMedia[$j]['id'],
"title" => $entMedia[$j]['title'],
"description" => $entMedia[$j]['description'],
"thumbnail_url" => $entMedia[$j]['thumbnail_url'],
"viewedAt" => $em->getRepository('AppBundle:Representative')->getMediaViewedAt($entEmail[$i]['id'], $entMedia[$j]['id']) ? $em->getRepository('AppBundle:Representative')->getMediaViewedAt($entEmail[$i]['id'], $entMedia[$j]['id']) : "0000-00-00 00:00:00"
];
}

$response[] = [
"id" => $entEmail[$i]['id'],
"rep_id" => $entEmail[$i]['reps_id'],
"target_id" => $entEmail[$i]['targets_id'],
"brands_id" => $entEmail[$i]['brands_id'],
"brand_name" => $entEmail[$i]['name'],
"messages_id" => $entEmail[$i]['messages_id'],
"message_text" => $entEmail[$i]['message_text'],
"media" => $media,
"category" => $entEmail[$i]['category'],
"createdAt" => $entEmail[$i]['createdAt'],
"openedAt" => $em->getRepository('AppBundle:Representative')->getEmailOpenetAt($entEmail[$i]['id']) ? $em->getRepository('AppBundle:Representative')->getEmailOpenetAt($entEmail[$i]['id']) : "0000-00-00 00:00:00",
"viewedAt" => $em->getRepository('AppBundle:Representative')->getEmailViewedAt($entEmail[$i]['id']) ? $em->getRepository('AppBundle:Representative')->getEmailViewedAt($entEmail[$i]['id']) : "0000-00-00 00:00:00"
];

unset($media);
}

关于php - 始终使用值获取 $media,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30471305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com