php - 基于特定键值的关联数组差异
问题描述
我有两个数组。我想根据 sub-key 得到它们之间的区别name
。我可以使用array_diff(array_column($array2, 'name'), array_column($array1, 'name'));
,但结果数组缺少其他键/值id
,并且created
由于使用array_column
. 我不需要顶级数字索引与想要的数组相同。
我安装了集合,但找不到合适的方法:https ://laravel.com/docs/5.8/collections#available-methods
阵列 1
array (
2 =>
array (
'name' => 'sitebackup_2019_07_21_10_02_67.zip',
'id' => '/restore_point_backups/sitebackup_2019_07_21_10_02_67.zip',
'created' => 1563787267,
),
1 =>
array (
'name' => 'sitebackup_2019_07_21_10_00_38.zip',
'id' => '/restore_point_backups/sitebackup_2019_07_21_10_00_38.zip',
'created' => 1563787197,
),
0 =>
array (
'name' => 'sitebackup_2019_07_19_09_48_16.zip',
'id' => '/restore_point_backups/sitebackup_2019_07_19_09_48_16.zip',
'created' => 1563787125,
),
)
阵列 2
array (
0 =>
array (
'id' => 'C:\\xampp\\htdocs\\restore_point_backups_fagardesignscom\\files',
'name' => 'sitebackup_2019_07_19_08_52_37.zip',
'created' => 1563519157,
),
1 =>
array (
'id' => 'C:\\xampp\\htdocs\\restore_point_backups_fagardesignscom\\files',
'name' => 'sitebackup_2019_07_19_09_48_16.zip',
'created' => 1563522496,
),
2 =>
array (
'id' => 'C:\\xampp\\htdocs\\restore_point_backups_fagardesignscom\\files',
'name' => 'sitebackup_2019_07_21_10_00_38.zip',
'created' => 1563696044,
),
3 =>
array (
'id' => 'C:\\xampp\\htdocs\\restore_point_backups_fagardesignscom\\files',
'name' => 'sitebackup_2019_07_21_10_02_67.zip',
'created' => 1563696184,
),
4 =>
array (
'id' => 'C:\\xampp\\htdocs\\restore_point_backups_fagardesignscom\\files',
'name' => 'sitebackup_2019_07_21_10_12_29.zip',
'created' => 1563696754,
),
5 =>
array (
'id' => 'C:\\xampp\\htdocs\\restore_point_backups_fagardesignscom\\files',
'name' => 'sitebackup_2019_Jul_21_10_17_58.zip',
'created' => 1563697083,
),
)
通缉
array (
0 =>
array (
'id' => 'C:\\xampp\\htdocs\\restore_point_backups_fagardesignscom\\files',
'name' => 'sitebackup_2019_07_19_08_52_37.zip',
'created' => 1563519157,
),
4 =>
array (
'id' => 'C:\\xampp\\htdocs\\restore_point_backups_fagardesignscom\\files',
'name' => 'sitebackup_2019_07_21_10_12_29.zip',
'created' => 1563696754,
),
5 =>
array (
'id' => 'C:\\xampp\\htdocs\\restore_point_backups_fagardesignscom\\files',
'name' => 'sitebackup_2019_Jul_21_10_17_58.zip',
'created' => 1563697083,
),
)
解决方案
试试下面的代码。它会起作用的。
//Get the column value from array 2 by name
$array2_col = array_column($array_2, 'name');
foreach($array as $key=>$value){
//if array1 name value exist in array 2 get that key and delete from array 2 using unset.
$index = array_search($value['name'], $array2_col);
if($index !== false ){
unset($array_2[$index]);
}
}
echo "<pre>";
print_r($array_2 );
输出。
Array
(
[0] => Array
(
[id] => C:\xampp\htdocs\restore_point_backups_fagardesignscom\files
[name] => sitebackup_2019_07_19_08_52_37.zip
[created] => 1563519157
)
[4] => Array
(
[id] => C:\xampp\htdocs\restore_point_backups_fagardesignscom\files
[name] => sitebackup_2019_07_21_10_12_29.zip
[created] => 1563696754
)
[5] => Array
(
[id] => C:\xampp\htdocs\restore_point_backups_fagardesignscom\files
[name] => sitebackup_2019_Jul_21_10_17_58.zip
[created] => 1563697083
)
)
如果你想像1,2,3这样的顺序是数组索引,可以使用array_value。
print_r(array_values($array_2));
推荐阅读
- xml - odoo 中的模板继承 13/14
- android - 无法在颤振中运行 stripe_sdk 示例
- ios - 在 SwiftUI 中编辑大量文本
- ruby-on-rails - Validator 辅助方法中的 Rspec 模拟验证条件
- python - 如何在python中为n * 3创建一个数组
- python - 尝试用地图中的值替换数据帧值时无法比较类型“ndarray(dtype=int64)”和“str”
- c# - .net Core 服务启动时间过长
- domain-driven-design - 未将域耦合到六角架构 asp.netcore webapi 中的基础架构层
- hibernate - Oracle DB 的 persistence.xml 中的问题
- c++ - 在 C++ 的类末尾写 private 有什么特殊含义吗?