$XMLproducts = simplexml_load_file("products.xml");
使用simplexml_load_file函数,我正在创建链接的关联数组,这些链接为下面的XML文件中的计算机提供硬盘空间。
foreach($XMLproducts->product as $Product) {
$hard_drive[$Product->harddrive] = "<a href='searchResults.php?Keyword=".$keyword."&Harddrive=".$Product->harddrive."'>".$Product->harddrive . "</a>";
}
对于每个循环,我需要在if语句中使用硬盘空间(IE 200,100等)的实际数值。如何在下面的foreach循环中引用数字量(在XML文件的'harddrive'元素中找到)。我认为最好的方法是使用下面的$ key变量。 foreach循环不输出任何东西 - 有或没有if语句。
foreach($hard_drive as $key => $value) {
if ($key == "200GB") {
echo $key . " " . $value . "<br>";
}}
<products>
<product type="Desktop">
<name>Desktop 1</name>
<harddrive>200GB</harddrive>
</product>
<product type="Tablet">
<name>Ipad 1</name>
<harddrive>100GB</harddrive>
</product>
<product type="Desktop">
<name>Desktop 2</name>
<harddrive>200GB</harddrive>
</product>
<product type="Tablet">
<name>Ipad 2</name>
<harddrive>80GB</harddrive>
</product>
</products>
答案 0 :(得分:0)
试试这个吗?
foreach($XMLproducts->product as $Product) {
echo $Product->name." : ".$Product->harddrive;
if($Product->harddrive == "100GB"){
echo " ***";
}
echo "\n";
}
答案 1 :(得分:0)
有三件事需要改变 -
首先,我们需要将对象的属性转换为字符串,以使用它们作为数组中的键,使用(字符串)。
其次,您生成阵列的方式会覆盖两个硬盘驱动器具有相同容量的位置 - 它们将具有完全相同的密钥,从而擦除第一个200GB驱动器的数据。我们可以使用对象的名称作为键,并将容量和超链接存储在该数组元素中。
第三,只是一个样式决定,我重命名了数组$ hard_drives。
foreach($XMLproducts->product as $Product) {
$hd = (string)$Product->harddrive;
$name = (string)$Product->name;
$hard_drives[$name]['link'] = "<a href='searchResults.php?Keyword=".$keyword."&Harddrive=".$hd."'>".$hd . "</a>";
$hard_drives[$name]['capacity'] = $hd;
}
//echo '<pre>';
//print_r($hard_drives);
//echo '</pre>';
foreach($hard_drives as $key => $array) {
if ($array['capacity'] == "200GB") {
echo $key . " " . $array['capacity'] . " " .$array['link']."<br>";
}
}