如何解决比较两个不同的数组键,然后对第一个数组中不存在的值进行处理
| 数组似乎只是不想为我点击的主题之一。在SQL中似乎更容易...希望您能提供帮助。 我有两个要比较键布局的数组,它们完全不同,我希望将* $ first_array-> place-> name *与* $ second_array-> post_name *进行比较,如果第一个数组中的值不存在于第二个中,那么我想对此做些事情,可能是一个插入语句。 $first_array=simplexml_load_file(\'xml/file.xml\'); // Load an XML file
echo \"<p>Check we are getting a value from the 1st array: \".$first_array->place[0]->name.\"</p>\";
//echo\"<pre>\";
//var_dump($first_array);
//echo\"</pre>\";
$second_array=get_pages(); // Get a list of Posts from WP
echo \"<p>Check we are getting a value from the 2nd array: \".$second_array[0]->post_name.\"</p>\";
//echo\"<pre>\";
//var_dump($second_array);
//echo\"</pre>\";
从第一个数组开始
object(SimpleXMLElement)#99 (1) {
[\"place\"]=>
array(5) {
[0]=>
object(SimpleXMLElement)#101 (14) {
[\"name\"]=>
string(5) \"China\"
从第二个数组
array(6) {
[0]=>
object(stdClass)#199 (24) {
[\"post_title\"]=>
string(5) \"Japan\"
更多
[1]=>
object(stdClass)#197 (24) {
[\"post_title\"]=>
string(5) \"China\"
更多
[2]=>
object(stdClass)#197 (24) {
[\"post_title\"]=>
string(6) \"Israel\"
区别显然是日本和以色列
进度更新#1
我进入了阶段,对于存在的记录有两个结果,但是我想要一个XML文件中存在的记录的不同列表,但是在$ second_array中不存在:
<?php
$xml = simplexml_load_file(\'xml/regions.xml\');
// echo \"<p>\".$xml->place[0]->name.\"</p>\";
echo\"<pre>\";
var_dump($xml);
echo\"</pre>\";
$args = array(\'post_type\' => \'page\',\'child_of\' => 20,\'exclude\' => 22);
$wparray=get_pages($args);
// echo \"<p>\".$wparray[0]->post_name.\"</p>\";
echo\"<pre>\";
var_dump($wparray);
echo\"</pre>\";
foreach($xml as $yregions_places) {
for($j=0;$j<count($wparray);$j++) {
if($yregions_places->name==$wparray[$j]->post_title) {
echo \"<p style=\\\"color:green;\\\">\".$yregions_places->name.\"<p>\"; }
}
}
?>
有人可以帮助我进入下一阶段吗?我真的很努力!
进度更新2
经过Brian \的指针管理之后,我认为我在数组中同时拥有两组数据:
$yregions_xml = (array)simplexml_load_file(\'xml/regions.xml\');
// echo\"<pre>\";
// var_dump($yregions_xml);
// echo\"</pre>\";
$yregions_xml = array_pop($yregions_xml);
for($j=0;$j<count($yregions_xml);$j++) {
echo \"<p style=\\\"color:purple;\\\">\".(trim(strtolower($yregions_xml[$j]->name))).\"</p>\";
}
$wpargs = array(\'post_type\' => \'page\',\'exclude\' => 22);
$wparray=get_pages($wpargs);
// echo\"<pre>\";
// var_dump($wparray);
// echo\"</pre>\";
for($j=0;$j<count($wparray);$j++) {
echo \"<p style=\\\"color:green;\\\">\".(trim(strtolower($wparray[$j]->post_name))).\"</p>\";
所以我不必做一些比较吗?
进度更新#3
//store XML data in SimpleXMLObject
$xml = simplexml_load_file(\'xml/file.xml\');
$first_array=array_pop($yregions_xml);
//initiate arrays
$first_array = array();
$second_array = array();
//populate arrays with object data that interests us
foreach($xml->place as $place){
foreach($place as $name){
$first_array[] = $name;
echo \"<p style=\\\"color:green;\\\">\".$name.\"</p>\";
}
}
$wpargs = array(\'post_type\' => \'page\',\'exclude\' => 22);
foreach(get_pages($wpargs) as $page){
$second_array[] = $page->post_title;
echo \"<p style=\\\"color:red;\\\">\".$page->post_title.\"</p>\";
}
//perform comparison
$unique_to_first_array = array_diff($first_array,$second_array);
echo \"<pre>\";
var_dump($unique_to_first_array);
echo \"</pre>\";
//now do your SQL,etc with this new array
完成的代码
我把所有进度都留在了那里,所以每个人都可以看到正在进行的工作,希望这会对其他人有所帮助。我知道我为此感到挣扎。感谢@brian_d和@rrapuya提供的完整和评论的帮助答案。
// store XML data in SimpleXMLObject
$xml = simplexml_load_file(\'xml/file.xml\');
// initiate arrays
$first_array = array();
$second_array = array();
// populate arrays with object data that interests us
foreach($xml->place as $place){
foreach($place->name as $name){
$first_array[] = $name;
// echo \"<p style=\\\"color:green;\\\">\".$name.\"</p>\";
}
}
$wpargs = array(\'post_type\' => \'page\',\'exclude\' => 22);
foreach(get_pages($wpargs) as $page){
$second_array[] = $page->post_title;
// echo \"<p style=\\\"color:red;\\\">\".$page->post_title.\"</p>\";
}
// perform comparison
$unique_to_first_array = array_diff($first_array,$second_array);
echo \"<pre>\";
var_dump($unique_to_first_array);
echo \"</pre>\";
//now do your SQL,etc with this new array
解决方法
我希望这有帮助。这两个关键点是从对象数据中填充数组,然后使用PHP函数array_diff获取仅在第一个数组中找到的值。
//store XML data in SimpleXMLObject
$xml = simplexml_load_file(\'xml/file.xml\');
//initiate arrays
$first_array = array();
$second_array = array();
//populate arrays with object data that interests us
foreach($xml->place as $place){
foreach($place as $name){
$first_array[] = (string)$name;
}
}
foreach(get_pages() as $page){
$second_array[] = $page->post_title;
}
//perform comparision
$unique_to_first_array = array_diff($first_array,$second_array);
//now do your SQL,etc with this new array
, 试试这个foreach($ first_array作为$ arrobj){
for($j=0;$j<count($second_array);$j++){
if($arrobj->place->name ==$second_array[$j]->post_title){
//do query here
}else{
//do query here
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。