比较两个不同的数组键,然后对第一个数组中不存在的值进行处理

如何解决比较两个不同的数组键,然后对第一个数组中不存在的值进行处理

| 数组似乎只是不想为我点击的主题之一。在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 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res