[英]php if else statement not echoing else
如果沒有iplang“ noname”,我嘗試回顯挪威語言(如果有xmllang =“ no”)。 喜歡
000000000121698001,
文本000000000121699001,noname
但這只會返回所有具有xmllang =“ no”的 productid,而不會打印沒有xmllang =“ no”的 productId
XML
<catalog>
<product productid="000000000121698001">
<displayname xmllang="da">text</displayname>
<displayname xmllang="fi">text</displayname>
<displayname xmllang="no">text</displayname>
<displayname xmllang="sv">text</displayname>
</product>
<product productid="000000000121699001">
<displayname xmllang="da">test</displayname>
<displayname xmllang="x-default">test</displayname>
<displayname xmllang="sv">test</displayname>
</product>
PHP
foreach ($xml->product as $product) {
foreach ($product->displayname as $name) {
switch((string) $name['xmllang']) {
case 'no':
echo $product->attributes()->productid. ",";
if (isset($name)){
echo $name. ",", PHP_EOL;
} else {
echo 'noname ,';
}
echo "<br>\n";
}
}
}
我將其分為兩部分:第一,准備數據並找到正確的本地化標簽或設置默認值; 然后2nd以任何格式輸出數據(或理想情況下將$idList
傳遞給模板)。
<?php
/** @var SimpleXMLElement $xml */
$idList = [];
/* Prepare the data */
foreach ($xml->product as $product) {
$fallbackLabel = null;
/* Iterate over the display names */
foreach ($product->displayname as $name) {
/* And search for the one in a matching language */
switch ((string)$name['xmllang']) {
case 'no':
$idList[$product->attributes()->productid] = $name;
break;
case 'x-default':
$fallbackLabel = $name;
break;
}
}
/* If no name in the searched language was found, set a fallback here */
if (!isset($idList[$product->attributes()->productid])) {
if (!empty($fallbackLabel)) {
/* If a label with a language code of "x-default" was found, use that as fallback label */
$idList[$product->attributes()->productid] = $fallbackLabel;
} else {
/* …if not set a static text */
$idList[$product->attributes()->productid] = 'noname';
}
}
}
/* Output the data */
foreach ($idList as $id => $label) {
echo sprintf("%s,%s<br>\n", $id, $label);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.