我正在尝试根据$ProductCurrency返回货币符号和货币代码,其值是数组第一列中的货币之一,这是我拥有的代码;
<?php
$currency_symbols = array (
array ('australian dollar','$','aud'),
array ('brazilian real','R$','brl'),
array ('canadian dollar','$','cad'),
array ('czech koruna','Kč','czk'),
array ('danish krone','kr','dkk'),
array ('euro','€','euro'),
array ('pound sterling','£','gbp'),
array ('hong kong dollar','$','hkd'),
array ('hungarian forint','Ft','huf'),
array ('israeli new sheqel','₪','ils'),
array ('japanese yen','¥','jpy'),
array ('malaysian ringgit','RM','myr'),
array ('mexican peso','$','mxn'),
array ('norwegian krone','kr','nok'),
array ('new zealand dollar','$','nzd'),
array ('philippine peso','₱','php'),
array ('polish zloty','zł','pln'),
array ('russian ruble','руб','rub'),
array ('singapore dollar','$','sgd'),
array ('swedish krona','kr','sek'),
array ('swiss franc','CHF','chf'),
array ('thai baht','฿','thb'),
array ('turkish lira','₤','try'),
array ('taiwan new dollar','NT$','twd'),
array ('us dollar','$','usd'),
);
$ProductCurrency = 'australian dollar';
$CurrencySymbol = $currency_symbols[$ProductCurrency][1];
$CurencyCode = $currency_symbols[$ProductCurrency][2];
?>
但是代码没有为我期望$
$CurrencySymbol和我期望"aud"的$CurrencyCode返回任何内容,变量,我错过了什么?
您使用$ProductCurrency
作为查找符号和代码的键,为此,您必须将数组格式化如下:
<?php
$currency_symbols = array (
'australian dollar' => array ('$','aud'),
'brazilian real' => array ('R$','brl'),
// ...
);
$ProductCurrency = get_field('product_currency');
$CurrencySymbol = $currency_symbols[$ProductCurrency][0];
$CurencyCode = $currency_symbols[$ProductCurrency][1];
在分配$CurrencySymbol和$CurrencyCode之前,您可能应该检查数组中是否存在该键。
如果你想/必须保持$currency_symbols数组不变,你可以这样检索符号和代码:
$ProductCurrency = get_field('product_currency');
$filteredSymbols = array_filter($currency_symbols, function ($row) use ($ProductCurrency) {
return $row[0] === $ProductCurrency;
});
$CurrencySymbol = $filteredSymbols[0][1];
$CurrencyCode = $filteredSymbols[0][2];
这效率较低,老实说,很脏。您至少应该检查$filteredSymbols是否为空。
我在数组上没有看到太多逻辑,特别是如果您需要搜索特定key
,这是一种不同的方法:
<?php
$currency_symbols = array(
"australian dollar" => array ('$','aud'),
"brazilian real" => array ('R$','brl'),
"canadian dollar" => array ('$','cad'),
"czech koruna" => array ('Kč','czk'),
"danish krone" => array ('kr','dkk'),
"euro" => array ('€','euro'),
"pound sterling" => array ('£','gbp'),
"hong kong dollar" => array ('$','hkd'),
"hungarian forint" => array ('Ft','huf'),
"israeli new sheqel" => array ('₪','ils'),
"japanese yen" => array ('¥','jpy'),
"malaysian ringgit" => array ('RM','myr'),
"mexican peso" => array ('$','mxn'),
"norwegian krone" => array ('kr','nok'),
"new zealand dollar" => array ('$','nzd'),
"philippine peso" => array ('₱','php'),
"polish zloty" => array ('zł','pln'),
"russian ruble" => array ('руб','rub'),
"singapore dollar" => array ('$','sgd'),
"swedish krona" => array ('kr','sek'),
"swiss franc" => array ('CHF','chf'),
"thai baht" => array ('฿','thb'),
"turkish lira" => array ('₤','try'),
"taiwan new dollar" => array ('NT$','twd'),
"us dollar" => array ('$','usd')
);
$ProductCurrency = get_field('product_currency'); //us dollar
$CurrencySymbol = $currency_symbols[$ProductCurrency][0];
$CurencyCode = $currency_symbols[$ProductCurrency][1];
echo $CurrencySymbol; //$
echo $CurencyCode; //usd
Ideone 演示