我从动态内容生成XML文件,但我得到2种数组类型来获取图像: 第一种数组类型是当图像超过1时,例如:
array(1) {
["Images"]=>
array(3) {
[0]=>
array(2) {
["Url"]=>
string(57) "http://example.net/image1.jpg"
["Default"]=>
bool(true)
}
[1]=>
array(2) {
["Url"]=>
string(57) "http://example.net/image2.jpg"
["Default"]=>
bool(false)
}
[2]=>
array(2) {
["Url"]=>
string(57) "http://example.net/image3.jpg"
["Default"]=>
bool(false)
}
}
}
第二种类型是我只有1张图片,例如:
array(1) {
["Images"]=>
array(2) {
["Url"]=>
string(57) "http://example.net/image111.jpg"
["Default"]=>
bool(true)
}
}
如何使第二种类型使用第一个数组的类型,因为当我使用foreach循环这些数组时,内容存在问题。有什么功能可以解决这个问题吗?!
修改 现在这是foreach,它起作用了:
$productImages = $product->appendChild($this->_xmlDoc->createElement('ProductImages'));
if(isset($productInfo['ProductImages'])) {
foreach($productInfo['ProductImages']['Images'] as $image) {
if(!is_array($image) && is_string($image)) {
$productImage = $productImages->appendChild($this->_xmlDoc->createElement('ProductImage'));
$productImage->appendChild($this->_xmlDoc->createElement('ImagePath', $image));
}
if(isset($image['Url']) && is_array($image)) {
$productImage = $productImages->appendChild($this->_xmlDoc->createElement('ProductImage'));
$productImage->appendChild($this->_xmlDoc->createElement('ImagePath', $image['Url']));
}
}
}
这是foreach在我的问题后20分钟看起来的样子。所以我会投票给第一个答案,因为它类似于我的工作:)
干杯, 的Georgi!
答案 0 :(得分:0)
在使用SOAP调用之前,我遇到了同样的问题。您不需要更改阵列的结构。您可以使用is_array
简单地更改foreach循环的行为。它检查变量是否是数组。例如,使用您的数组:
$first_array = array(
"Images" => array(
array("Url" => "http://example.net/image1.jpg", "Default" => true),
array("Url" => "http://example.net/image2.jpg", "Default" => false),
array("Url" => "http://example.net/image3.jpg", "Default" => false)
)
);
$second_array = array(
"Images" => array(
"Url" => "http://example.net/image111.jpg",
"Default" => true
)
);
echo "Results on the first array:<br />";
foreach ($first_array["Images"] as $element) {
if (is_array($element)) {
foreach ($element as $value) {
echo $value . "<br />";
}
} else {
echo $element . "<br />";
}
}
echo "<br />";
echo "Result on the second array:<br />";
foreach ($second_array["Images"] as $element) {
if (is_array($element)) {
foreach ($element as $value) {
echo $value . "<br />";
}
} else {
echo $element . "<br />";
}
}
PHPFiddle链接:http://phpfiddle.org/main/code/4y8j-4jd1