阵列似乎是那些不想为我点击的主题之一。在SQL中看起来比较容易......我希望你能帮忙......
我有两个数组,我希望比较键布局是完全不同的,我希望比较* $ first_array-> place-> name * with * $ second_array-> post_name * then if if a value from the第一个数组在第二个数组中不存在然后我想对此做一些事情,可能是排序的Insert语句..
$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>";
来自First Array ..
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"
差异显然是日本和以色列
我得到了一个阶段,我有两个结果用于存在的记录,但我想要一个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>"; }
}
}
?>
有人可以帮助我进入下一阶段吗?我真的在尝试!
在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','child_of' => 20,'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>";
所以不是我必须做一些比较吗?
//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','child_of' => 20,'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','child_of' => 20,'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
答案 0 :(得分:2)
我希望这会有所帮助。两个关键点是从对象数据填充数组,然后使用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
答案 1 :(得分:0)
试试这个作为foreach($ first_array as $ 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
}
}
}