Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用1个数组中的键和另一个数组中的值合并2个PHP数组,但如果一个数组中不存在该键,则必须删除该键_Php_Arrays - Fatal编程技术网

使用1个数组中的键和另一个数组中的值合并2个PHP数组,但如果一个数组中不存在该键,则必须删除该键

使用1个数组中的键和另一个数组中的值合并2个PHP数组,但如果一个数组中不存在该键,则必须删除该键,php,arrays,Php,Arrays,我尝试使用2个PHP数组来保存插件数据 1个数组具有来自数据库的插件键/值,另一个来自插件文件头 我需要创建一个新数组,将文件数组中的值合并到db数组中 如果db数组具有文件数组中不存在的密钥,则应从最终数组中删除该密钥 如果文件数组中有一个db数组中不存在的密钥,则该密钥应保留在文件数组中 // array_merge() $dbPluginArray = array( 'version' => '', 'name' => 'db-name', 'db-ke

我尝试使用2个PHP数组来保存插件数据

1个数组具有来自数据库的插件键/值,另一个来自插件文件头

我需要创建一个新数组,将文件数组中的值合并到db数组中

如果db数组具有文件数组中不存在的密钥,则应从最终数组中删除该密钥

如果文件数组中有一个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数组中存在的所有键,并且这些键具有来自文件数组中匹配键的值

// 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获得更好的解决方案