如何在 PHP 数组中显示逗号?
How to display comma in PHP array?
我正在设置这个数组,它在我的站点中的大部分工作正常。注意:这是一个 Joomla 站点和一个 VirtueMart PHP 文件,用于客户在订购产品时收到的电子邮件。
$addressBTOrder = array('email{br}', 'company{br}', 'title', 'first_name', 'last_name{br}', 'address_1{br}', 'address_2{br}', 'city', 'virtuemart_state_id', 'zip{br}', 'virtuemart_country_id{br}', 'phone_1{br}', 'phone_2{br}');
但是,我需要在数组中的 CITY 之后添加一个逗号 (,) 才能在最终输出中实际显示一个逗号。如果我只是在城市后面加上逗号:
'city,'
...它不起作用,城市输出根本不显示。我也尝试了逗号 (%2c) 的十六进制值,但它也没有用。
这是创建输出的代码:
<?php
foreach ($addressBTOrder as $fieldname) {
$fieldinfo = explode('{',$fieldname);
if (!empty($this->userfields['fields'][$fieldinfo[0]]['value'])) { ?>
<span class="values vm2<?php echo '-' . $this->userfields['fields'][$fieldinfo[0]]['name'] ?>" ><?php echo $this->escape($this->userfields['fields'][$fieldinfo[0]]['value']) ?></span> <?php
if (isset($fieldinfo[1]) && $fieldinfo[1] == 'br}') { ?>
<br class="clear" /> <?php
}
}
}
?>
我需要放什么代码才能在最终输出中显示逗号?例如,我使用 {br} 使换行有效。谢谢!
我从你的代码中得到的是,你想在相应的 userfield 值的每个输出后指定某种后缀。
另一种方法是利用您的 CSS 类。这意味着您可以在不添加额外元素的情况下正确设置内容样式。
例如,回到原来的数组,没有任何额外的东西
$addressBTOrder = ['email', 'company', 'title', 'city', ...];
foreach ($addressBTOrder as $field) :
$userField = $this->userfields['fields'][$field];
if (!empty($userField['value'])) : ?>
<span class="values vm2-<?= $userField['name'] ?>">
<?= $this->escape($userField['value']) ?>
</span>
<?php endif; endforeach ?>
并且,由于您已经添加了 CSS 类,我猜这就像 vm2-email
、vm2-company
等...
.vm2-email, .vm2-company {
display: block; /* same as adding a newline */
}
.vm2-city:after {
content: ",";
}
原始答案在这里...
我建议使用更简洁的数据格式。例如
$br = '<br class="clear" />';
$addressBTOrder = [[
'key' => 'email',
'suffix' => $br
], [
'key' => 'company',
'suffix' => $br
], [
'key' => 'title',
'suffix' => ''
], /* etc */ [
'key' => 'city',
'suffix' => ','
]];
然后你可以像这样迭代...
<?php foreach ($addressBTOrder as $field) :
$userField = $this->userfields['fields'][$field['key']];
if (!empty($userField['value'])) : ?>
<span class="values vm2-<?= $userField['name'] ?>">
<?= $this->escape($userField['value']), $field['suffix'] ?>
</span>
<?php endif; endforeach ?>
问题是您期望数组元素中 {
之前的所有内容都是 $this->userfields['fields']
数组中的键。但是当你在那里有一个逗号时,它与数组键不匹配。因此,在将其用作键之前,您需要删除逗号。如果它有逗号,则需要将其添加到输出中。
foreach ($addressBTOrder as $fieldname) {
$fieldinfo = explode('{',$fieldname);
$name = $fieldinfo[0];
if ($name[-1] == ",") {
$comma = ",";
$name = substr($name, 0, -1);
} else {
$comma = "";
}
if (!empty($this->userfields['fields'][$name]['value'])) { ?>
<span class="values vm2<?php echo '-' . $this->userfields['fields'][$name]]['name'] ?>" ><?php echo $this->escape($this->userfields['fields'][$name]['value']) . $comma; ?></span> <?php
if (isset($fieldinfo[1]) && $fieldinfo[1] == 'br}') { ?>
<br class="clear" /> <?php
}
}
}
完全按照您的需要设计视图比尝试使用代码来设计更简洁、更容易。例如这样的事情:
<?php if(!empty($this->userfields['fields']['email']['value'])): ?>
<span class="values vm2-email">
<?= $this->escape($this->userfields['fields']['email']['value']) ?></span>
</span>
<br class="clear" />
<?php endif; ?>
<?php if(!empty($this->userfields['fields']['city']['value'])): ?>
<span class="values vm2-city">
<?= $this->escape($this->userfields['fields']['city']['value']) ?>, </span>
</span>
<?php endif; ?>
<?php if(!empty($this->userfields['fields']['virtuemart_state_id']['value'])): ?>
<span class="values vm2-virtuemart_state_id">
<?= $this->escape($this->userfields['fields']['virtuemart_state_id']['value']) ?></span>
</span>
<?php endif; ?>
我正在设置这个数组,它在我的站点中的大部分工作正常。注意:这是一个 Joomla 站点和一个 VirtueMart PHP 文件,用于客户在订购产品时收到的电子邮件。
$addressBTOrder = array('email{br}', 'company{br}', 'title', 'first_name', 'last_name{br}', 'address_1{br}', 'address_2{br}', 'city', 'virtuemart_state_id', 'zip{br}', 'virtuemart_country_id{br}', 'phone_1{br}', 'phone_2{br}');
但是,我需要在数组中的 CITY 之后添加一个逗号 (,) 才能在最终输出中实际显示一个逗号。如果我只是在城市后面加上逗号:
'city,'
...它不起作用,城市输出根本不显示。我也尝试了逗号 (%2c) 的十六进制值,但它也没有用。
这是创建输出的代码:
<?php
foreach ($addressBTOrder as $fieldname) {
$fieldinfo = explode('{',$fieldname);
if (!empty($this->userfields['fields'][$fieldinfo[0]]['value'])) { ?>
<span class="values vm2<?php echo '-' . $this->userfields['fields'][$fieldinfo[0]]['name'] ?>" ><?php echo $this->escape($this->userfields['fields'][$fieldinfo[0]]['value']) ?></span> <?php
if (isset($fieldinfo[1]) && $fieldinfo[1] == 'br}') { ?>
<br class="clear" /> <?php
}
}
}
?>
我需要放什么代码才能在最终输出中显示逗号?例如,我使用 {br} 使换行有效。谢谢!
我从你的代码中得到的是,你想在相应的 userfield 值的每个输出后指定某种后缀。
另一种方法是利用您的 CSS 类。这意味着您可以在不添加额外元素的情况下正确设置内容样式。
例如,回到原来的数组,没有任何额外的东西
$addressBTOrder = ['email', 'company', 'title', 'city', ...];
foreach ($addressBTOrder as $field) :
$userField = $this->userfields['fields'][$field];
if (!empty($userField['value'])) : ?>
<span class="values vm2-<?= $userField['name'] ?>">
<?= $this->escape($userField['value']) ?>
</span>
<?php endif; endforeach ?>
并且,由于您已经添加了 CSS 类,我猜这就像 vm2-email
、vm2-company
等...
.vm2-email, .vm2-company {
display: block; /* same as adding a newline */
}
.vm2-city:after {
content: ",";
}
原始答案在这里...
我建议使用更简洁的数据格式。例如
$br = '<br class="clear" />';
$addressBTOrder = [[
'key' => 'email',
'suffix' => $br
], [
'key' => 'company',
'suffix' => $br
], [
'key' => 'title',
'suffix' => ''
], /* etc */ [
'key' => 'city',
'suffix' => ','
]];
然后你可以像这样迭代...
<?php foreach ($addressBTOrder as $field) :
$userField = $this->userfields['fields'][$field['key']];
if (!empty($userField['value'])) : ?>
<span class="values vm2-<?= $userField['name'] ?>">
<?= $this->escape($userField['value']), $field['suffix'] ?>
</span>
<?php endif; endforeach ?>
问题是您期望数组元素中 {
之前的所有内容都是 $this->userfields['fields']
数组中的键。但是当你在那里有一个逗号时,它与数组键不匹配。因此,在将其用作键之前,您需要删除逗号。如果它有逗号,则需要将其添加到输出中。
foreach ($addressBTOrder as $fieldname) {
$fieldinfo = explode('{',$fieldname);
$name = $fieldinfo[0];
if ($name[-1] == ",") {
$comma = ",";
$name = substr($name, 0, -1);
} else {
$comma = "";
}
if (!empty($this->userfields['fields'][$name]['value'])) { ?>
<span class="values vm2<?php echo '-' . $this->userfields['fields'][$name]]['name'] ?>" ><?php echo $this->escape($this->userfields['fields'][$name]['value']) . $comma; ?></span> <?php
if (isset($fieldinfo[1]) && $fieldinfo[1] == 'br}') { ?>
<br class="clear" /> <?php
}
}
}
完全按照您的需要设计视图比尝试使用代码来设计更简洁、更容易。例如这样的事情:
<?php if(!empty($this->userfields['fields']['email']['value'])): ?>
<span class="values vm2-email">
<?= $this->escape($this->userfields['fields']['email']['value']) ?></span>
</span>
<br class="clear" />
<?php endif; ?>
<?php if(!empty($this->userfields['fields']['city']['value'])): ?>
<span class="values vm2-city">
<?= $this->escape($this->userfields['fields']['city']['value']) ?>, </span>
</span>
<?php endif; ?>
<?php if(!empty($this->userfields['fields']['virtuemart_state_id']['value'])): ?>
<span class="values vm2-virtuemart_state_id">
<?= $this->escape($this->userfields['fields']['virtuemart_state_id']['value']) ?></span>
</span>
<?php endif; ?>