使用If进行PHP数组比较
我很难理解为什么不能在PHP中比较两个数组的值。如果我在循环过程中使用“echo$description->ItemDesriptionName;”和“echo$item->ItemName;”来回显这两个值,那么这些值看起来是相同的,但是当我尝试使用If来比较它们时,没有任何效果。我错过了什么使用If进行PHP数组比较,php,arrays,xml,simplexml,Php,Arrays,Xml,Simplexml,我很难理解为什么不能在PHP中比较两个数组的值。如果我在循环过程中使用“echo$description->ItemDesriptionName;”和“echo$item->ItemName;”来回显这两个值,那么这些值看起来是相同的,但是当我尝试使用If来比较它们时,没有任何效果。我错过了什么 <?php $xml=simplexml_load_file("test.xml") or die("Error: Cannot create object"); $categories = $
<?php
$xml=simplexml_load_file("test.xml") or die("Error: Cannot create object");
$categories = $xml->Menu->Categories;
$items = $xml->Menu->Categories->Items->ItemObject;
$itemdescription = $xml->Menu->Options->Description->DescriptionObject;
foreach($items as $item) {
echo $item->ItemName . ' - ' . $item->Price . '</br>';
foreach ($itemdescription as $description) {
if ($description->ItemDescriptionName == $item->ItemName) {
echo 'We have a match!';
//where I would echo $description->ItemDescription;
}
}
}
?>
这是XML文件
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Menu>
<Categories>
<Name>Category 1</Name>
<Items>
<ItemObject>
<ItemName>Item 1</ItemName>
<Price>1</Price>
</ItemObject>
<ItemObject>
<ItemName>Item 2</ItemName>
<Price>3</Price>
</ItemObject>
</Items>
</Categories>
<Options>
<Description>
<DescriptionObject>
<ItemDescriptionName>Item 1</ItemDescriptionName>
<ItemDescription>A Great item</ItemDescription>
</DescriptionObject>
<DescriptionObject>
<ItemDescriptionName>Item 2</ItemDescriptionName>
<ItemDescription>A Great item as well</ItemDescription>
</DescriptionObject>
</Description>
</Options>
</Menu>
</Root>
第一类
项目1
1.
项目2
3.
项目1
好东西
项目2
一个伟大的项目,以及
您是否可以使用一致的索引直接访问它们
$items=$xml->Menu->Categories->items->ItemObject;
$itemsdescription=$xml->Menu->Options->Description;
$i=0;
foreach($items作为$item){
回显$i.'.$item->ItemName.'-'.$item->Price;
echo$itemdescription->DescriptionObject[$i]->ItemDescriptionName[0];
回声';
echo$itemsdescription->DescriptionObject[$i]->itemsdescription[0];
回音“”;
$i++;
}
您是否可以使用一致的索引直接访问它们
$items=$xml->Menu->Categories->items->ItemObject;
$itemsdescription=$xml->Menu->Options->Description;
$i=0;
foreach($items作为$item){
回显$i.'.$item->ItemName.'-'.$item->Price;
echo$itemdescription->DescriptionObject[$i]->ItemDescriptionName[0];
回声';
echo$itemsdescription->DescriptionObject[$i]->itemsdescription[0];
回音“”;
$i++;
}
比较为字符串
并且您在ItemDescriptionName(ItemDescriptionName)中有输入错误
比较为字符串
并且您在ItemDescriptionName(ItemDescriptionName)中有输入错误
转换为字符串,然后比较
<?php
$xml=simplexml_load_file("test.xml") or die("Error: Cannot create object");
$menu = $xml->Menu;
$categories = $xml->Menu->Categories;
$items = $xml->Menu->Categories->Items->ItemObject;
$itemdescription = $xml->Menu->Options->Description->DescriptionObject;
foreach($items as $item) {
$itemname = $item->ItemName;
foreach ($itemdescription as $description) {
$descriptionname = $description->ItemDescriptionName ;
echo $itemname." ---- ".$descriptionname."<br/>";
if((string)$itemname === (string)$descriptionname){
echo "Yes its matched";
}
}
}
?>
对我来说工作正常转换为字符串,然后比较
<?php
$xml=simplexml_load_file("test.xml") or die("Error: Cannot create object");
$menu = $xml->Menu;
$categories = $xml->Menu->Categories;
$items = $xml->Menu->Categories->Items->ItemObject;
$itemdescription = $xml->Menu->Options->Description->DescriptionObject;
foreach($items as $item) {
$itemname = $item->ItemName;
foreach ($itemdescription as $description) {
$descriptionname = $description->ItemDescriptionName ;
echo $itemname." ---- ".$descriptionname."<br/>";
if((string)$itemname === (string)$descriptionname){
echo "Yes its matched";
}
}
}
?>
对我来说工作正常像
$description->itemsdescriptionname
这样的属性是simplexmlement
对象。因此,您不会比较字符串,而是比较两个对象
SimpleXMLElement
对象实现了神奇的方法\uuuToString()
。它们可以自动转换为字符串,但与对象之间的比较不会触发该转换。你可以强制它:
if ((string)$description->ItemDescriptionName === (string)$item->ItemName) {
...
像
$description->itemsdescriptionname
这样的属性是simplexmlement
对象。因此,您不会比较字符串,而是比较两个对象
SimpleXMLElement
对象实现了神奇的方法\uuuToString()
。它们可以自动转换为字符串,但与对象之间的比较不会触发该转换。你可以强制它:
if ((string)$description->ItemDescriptionName === (string)$item->ItemName) {
...
如果你在这里有一个输入错误,你的源代码中是否也有输入错误?ItemDescriptionName属性的说明缺少一个“n”源没有,但仍然不起作用。谢谢如果你这里有输入错误,你的源代码中也有输入错误吗?ItemDescriptionName属性的说明缺少一个“n”源没有,但仍然不起作用。谢谢