使用1个数组中的键和另一个数组中的值合并2个PHP数组,但如果一个数组中不存在该键,则必须删除该键
我尝试使用2个PHP数组来保存插件数据 1个数组具有来自数据库的插件键/值,另一个来自插件文件头 我需要创建一个新数组,将文件数组中的值合并到db数组中 如果db数组具有文件数组中不存在的密钥,则应从最终数组中删除该密钥 如果文件数组中有一个db数组中不存在的密钥,则该密钥应保留在文件数组中使用1个数组中的键和另一个数组中的值合并2个PHP数组,但如果一个数组中不存在该键,则必须删除该键,php,arrays,Php,Arrays,我尝试使用2个PHP数组来保存插件数据 1个数组具有来自数据库的插件键/值,另一个来自插件文件头 我需要创建一个新数组,将文件数组中的值合并到db数组中 如果db数组具有文件数组中不存在的密钥,则应从最终数组中删除该密钥 如果文件数组中有一个db数组中不存在的密钥,则该密钥应保留在文件数组中 // array_merge() $dbPluginArray = array( 'version' => '', 'name' => 'db-name', 'db-ke
// array_merge()
$dbPluginArray = array(
'version' => '',
'name' => 'db-name',
'db-key-not-exist-in-file-array' => '' // this key should be removed from the final array
);
$filePluginArray = array(
'version' => 'file-version',
'name' => 'file-name',
'file-key-not-exist-in-db-array' => 'trapezoid'
);
$newMergeArray = array_merge($dbPluginArray, $filePluginArray);
echo '<pre>';
print_r($newMergeArray );
echo '</pre>';
/*
Array
(
[version] => file-version
[name] => file-name
[db-key-not-exist-in-file-array] =>
[file-key-not-exist-in-db-array] => trapezoid
)
*/
// array_replace()
$dbPluginArray = array(
'version' => '',
'name' => 'db-name',
'db-key-not-exist-in-file-array' => '' // this key should be removed from the final array
);
$filePluginArray = array(
'version' => 'file-version',
'name' => 'file-name',
'file-key-not-exist-in-db-array' => 'trapezoid'
);
$newReplaceArray = array_replace($dbPluginArray, $filePluginArray);
echo '<pre>';
print_r($newReplaceArray);
echo '</pre>';
/*
Array
(
[version] => file-version
[name] => file-name
[db-key-not-exist-in-file-array] =>
[file-key-not-exist-in-db-array] => trapezoid
)
*/
// array_intersect_key
$dbPluginArray = array(
'version' => '',
'name' => 'db-name',
'db-key-not-exist-in-file-array' => '', // this key should be removed from the final array,
'test' => 'testval'
);
$filePluginArray = array(
'version' => 'file-version',
'name' => 'file-name',
'file-key-not-exist-in-db-array' => 'trapezoid',
'test' => 'testval'
);
echo '<pre>';
$result = array_intersect_key($filePluginArray,$dbPluginArray);
print_r($result);
echo '</pre>';
/*
Array
(
[version] => file-version
[name] => file-name
[test] => testval
)
*/
最后一个数组输出目标是确保新数组始终具有DB数组中存在的所有键,并且这些键具有来自文件数组中匹配键的值
// array_merge()
$dbPluginArray = array(
'version' => '',
'name' => 'db-name',
'db-key-not-exist-in-file-array' => '' // this key should be removed from the final array
);
$filePluginArray = array(
'version' => 'file-version',
'name' => 'file-name',
'file-key-not-exist-in-db-array' => 'trapezoid'
);
$newMergeArray = array_merge($dbPluginArray, $filePluginArray);
echo '<pre>';
print_r($newMergeArray );
echo '</pre>';
/*
Array
(
[version] => file-version
[name] => file-name
[db-key-not-exist-in-file-array] =>
[file-key-not-exist-in-db-array] => trapezoid
)
*/
// array_replace()
$dbPluginArray = array(
'version' => '',
'name' => 'db-name',
'db-key-not-exist-in-file-array' => '' // this key should be removed from the final array
);
$filePluginArray = array(
'version' => 'file-version',
'name' => 'file-name',
'file-key-not-exist-in-db-array' => 'trapezoid'
);
$newReplaceArray = array_replace($dbPluginArray, $filePluginArray);
echo '<pre>';
print_r($newReplaceArray);
echo '</pre>';
/*
Array
(
[version] => file-version
[name] => file-name
[db-key-not-exist-in-file-array] =>
[file-key-not-exist-in-db-array] => trapezoid
)
*/
// array_intersect_key
$dbPluginArray = array(
'version' => '',
'name' => 'db-name',
'db-key-not-exist-in-file-array' => '', // this key should be removed from the final array,
'test' => 'testval'
);
$filePluginArray = array(
'version' => 'file-version',
'name' => 'file-name',
'file-key-not-exist-in-db-array' => 'trapezoid',
'test' => 'testval'
);
echo '<pre>';
$result = array_intersect_key($filePluginArray,$dbPluginArray);
print_r($result);
echo '</pre>';
/*
Array
(
[version] => file-version
[name] => file-name
[test] => testval
)
*/
新阵列: 键=来自DB数组。如果文件数组缺少DB数组中的密钥,请将其从新数组中删除 值=来自DB数组键与文件数组中的数组键匹配的文件数组,然后为新数组返回该值
我已经使用PHP的
array\u merge
、array\u replace
和array\u intersect\u键进行了测试。这些代码和输出如下所示
array\u intersect\u keys
获取最接近我想要的结果,但它不会删除DB array中存在且文件数组中不存在的键
// array_merge()
$dbPluginArray = array(
'version' => '',
'name' => 'db-name',
'db-key-not-exist-in-file-array' => '' // this key should be removed from the final array
);
$filePluginArray = array(
'version' => 'file-version',
'name' => 'file-name',
'file-key-not-exist-in-db-array' => 'trapezoid'
);
$newMergeArray = array_merge($dbPluginArray, $filePluginArray);
echo '<pre>';
print_r($newMergeArray );
echo '</pre>';
/*
Array
(
[version] => file-version
[name] => file-name
[db-key-not-exist-in-file-array] =>
[file-key-not-exist-in-db-array] => trapezoid
)
*/
// array_replace()
$dbPluginArray = array(
'version' => '',
'name' => 'db-name',
'db-key-not-exist-in-file-array' => '' // this key should be removed from the final array
);
$filePluginArray = array(
'version' => 'file-version',
'name' => 'file-name',
'file-key-not-exist-in-db-array' => 'trapezoid'
);
$newReplaceArray = array_replace($dbPluginArray, $filePluginArray);
echo '<pre>';
print_r($newReplaceArray);
echo '</pre>';
/*
Array
(
[version] => file-version
[name] => file-name
[db-key-not-exist-in-file-array] =>
[file-key-not-exist-in-db-array] => trapezoid
)
*/
// array_intersect_key
$dbPluginArray = array(
'version' => '',
'name' => 'db-name',
'db-key-not-exist-in-file-array' => '', // this key should be removed from the final array,
'test' => 'testval'
);
$filePluginArray = array(
'version' => 'file-version',
'name' => 'file-name',
'file-key-not-exist-in-db-array' => 'trapezoid',
'test' => 'testval'
);
echo '<pre>';
$result = array_intersect_key($filePluginArray,$dbPluginArray);
print_r($result);
echo '</pre>';
/*
Array
(
[version] => file-version
[name] => file-name
[test] => testval
)
*/
//数组_merge()
$dbPluginArray=数组(
'版本'=>'',
'名称'=>'数据库名称',
“文件数组中不存在db键”=>“”//应从最终数组中删除此键
);
$filePluginArray=array(
“版本”=>“文件版本”,
“名称”=>“文件名”,
“数据库数组中不存在文件密钥”=>“梯形”
);
$newMergeArray=array\u merge($dbPluginArray,$filePluginArray);
回声';
打印($newMergeArray);
回声';
/*
排列
(
[版本]=>文件版本
[名称]=>文件名
[db密钥在文件数组中不存在]=>
[数据库数组中不存在文件密钥]=>梯形
)
*/
//数组_replace()
$dbPluginArray=数组(
'版本'=>'',
'名称'=>'数据库名称',
“文件数组中不存在db键”=>“”//应从最终数组中删除此键
);
$filePluginArray=array(
“版本”=>“文件版本”,
“名称”=>“文件名”,
“数据库数组中不存在文件密钥”=>“梯形”
);
$newReplaceArray=array\u replace($dbPluginArray,$filePluginArray);
回声';
打印($newReplaceArray);
回声';
/*
排列
(
[版本]=>文件版本
[名称]=>文件名
[db密钥在文件数组中不存在]=>
[数据库数组中不存在文件密钥]=>梯形
)
*/
//数组_相交_键
$dbPluginArray=数组(
'版本'=>'',
'名称'=>'数据库名称',
“db键在文件数组中不存在”=>“”,//应从最终数组中删除此键,
'测试'=>'测试值'
);
$filePluginArray=array(
“版本”=>“文件版本”,
“名称”=>“文件名”,
'文件密钥在db数组中不存在'=>'梯形',
'测试'=>'测试值'
);
回声';
$result=array\u intersect\u key($filePluginArray,$dbPluginArray);
打印(结果);
回声';
/*
排列
(
[版本]=>文件版本
[名称]=>文件名
[测试]=>testval
)
*/
那怎么办
$dbPluginArray=array(
'版本'=>'',
'名称'=>'数据库名称',
“文件数组中不存在db键”=>“”//应从最终数组中删除此键
);
$filePluginArray=array(
“版本”=>“文件版本”,
“名称”=>“文件名”,
“数据库数组中不存在文件密钥”=>“梯形”
);
回声';
$result=array\u merge(array\u intersect\u key($filePluginArray,$dbPluginArray),$filePluginArray);
打印(结果);
回声';
/*
排列
(
[版本]=>文件版本
[名称]=>文件名
[数据库数组中不存在文件密钥]=>梯形
)
*/
$dbPluginArray=数组(
'版本'=>'',
'名称'=>'数据库名称',
“db键在文件数组中不存在”=>“”,//应从最终数组中删除此键,
'测试'=>'测试值'
);
$filePluginArray=array(
“版本”=>“文件版本”,
“名称”=>“文件名”,
'文件密钥在db数组中不存在'=>'梯形',
'测试'=>'测试值'
);
回声';
$result=array\u merge(array\u intersect\u key($filePluginArray,$dbPluginArray),$filePluginArray);
打印(结果);
回声';
/*
排列
(
[版本]=>文件版本
[名称]=>文件名
[测试]=>testval
[数据库数组中不存在文件密钥]=>梯形
)
*/
那怎么办
$dbPluginArray=array(
'版本'=>'',
'名称'=>'数据库名称',
“文件数组中不存在db键”=>“”//应从最终数组中删除此键
);
$filePluginArray=array(
“版本”=>“文件版本”,
“名称”=>“文件名”,
“数据库数组中不存在文件密钥”=>“梯形”
);
回声';
$result=array\u merge(array\u intersect\u key($filePluginArray,$dbPluginArray),$filePluginArray);
打印(结果);
回声';
/*
排列
(
[版本]=>文件版本
[名称]=>文件名
[数据库数组中不存在文件密钥]=>梯形
)
*/
$dbPluginArray=数组(
'版本'=>'',
'名称'=>'数据库名称',
“db键在文件数组中不存在”=>“”,//应从最终数组中删除此键,
'测试'=>'测试值'
);
$filePluginArray=array(
“版本”=>“文件版本”,
“名称”=>“文件名”,
'文件密钥在db数组中不存在'=>'梯形',
'测试'=>'测试值'
);
回声';
$result=array\u merge(array\u intersect\u key($filePluginArray,$dbPluginArray),$filePluginArray);
打印(结果);
回声';
/*
排列
(
[版本]=>文件版本
[名称]=>文件名
[测试]=>testval
[数据库数组中不存在文件密钥]=>梯形
)
*/
这也可以完成这项工作。使用foreach
和arry\u merge
要获得下面建议的更好的解决方案,请使用,这样也可以。使用foreach
和arry\u merge
下面建议使用Hav获得更好的解决方案