我有一个现有的多个数组的关联数组。然后我有一个“名称”数组,我需要在前一个数组中找到每个“名称”,并通过键删除该数组。这里的目标是获取现有的文档数组,允许用户“删除”它们,所以我必须比较用户想要删除的文件的名称,然后在我的父数组中取消设置这些数组中的每一个,然后通过将这个最终数组存入数据库以保存为用户的“更新”列表。
伪代码将是: - 比较$names每个名称的数组,查找与数组中的名称匹配的$parentArray键。在 this 中,未设置的数组。name$namesforeach
我的多个数组的关联数组在这里:
Array
(
[0] => PetManagement\\Pet\\Document Object
(
[file:protected] => https://url.com/file_example_MP3_700KB.mp3
[name:protected] => file_example_MP3_700KB.mp3
[fileType:protected] => audio/mp3
[timestamp:protected] => 2019-08-21 08:28:12
[authorID:protected] => 2
[extension:protected] =>
[extensionIcon:protected] =>
)
[1] => PetManagement\\Pet\\Document Object
(
[file:protected] => https://url.com/file-sample_100kB.docx
[name:protected] => file-sample_100kB.docx
[fileType:protected] => application/vnd.openxmlformats-officedocument.wordprocessingml.document
[timestamp:protected] => 2019-08-21 08:28:12
[authorID:protected] => 2
[extension:protected] =>
[extensionIcon:protected] =>
)
[2] => PetManagement\\Pet\\Document Object
(
[file:protected] => https://url.com/file-sample_100kB.odt
[name:protected] => file-sample_34343kB.odt
[fileType:protected] => application/vnd.oasis.opendocument.text
[timestamp:protected] => 2019-08-21 08:28:12
[authorID:protected] => 2
[extension:protected] =>
[extensionIcon:protected] =>
)
)
我传入了一个“名称”数组,例如['file-sample_100kB.odt','file_example_MP3_700KB.mp3'],我想搜索这个大数组以删除name键与该数组中的每个值相匹配的键,以及unset键。
因此,在我的示例中,使用$names数组,我将删除 key3和 0.
我一直在使用的通用代码如下,但我似乎无法让它正常工作:
$docs = $p->getDocuments(); //existing $parentArray
$docsToRemove = explode(',',$this->postData['documents']); //create array of names we want to remove from $docs
foreach ($docsToRemove as $key=>$value) {
//$value is the name we want to remove
//'name' is the assoc array key we want to remove
error_log(print_r(array_search($value, array_column($docs, 'name'))),true); //returns empty array
}
任何帮助将不胜感激。在此之前,我是做多foreach环,但使用的混合被告知只是array_search()和array_column()会是一个更好更先进的解决方案。
潇湘沐