Php 转储数组
我有一个相当基本的Wordpress高级自定义字段设置。我需要在自定义帖子中添加额外的字段,然后在帖子页面上显示它们。我有这段代码,但当我进入一个有多个复选框选择的自定义字段时,很明显,这个特定字段转储了单词“array”,因为它是一个数组 如何在下面编写代码,转储常规字段以及包含数组的字段的所有标签和数据Php 转储数组,php,arrays,Php,Arrays,我有一个相当基本的Wordpress高级自定义字段设置。我需要在自定义帖子中添加额外的字段,然后在帖子页面上显示它们。我有这段代码,但当我进入一个有多个复选框选择的自定义字段时,很明显,这个特定字段转储了单词“array”,因为它是一个数组 如何在下面编写代码,转储常规字段以及包含数组的字段的所有标签和数据 $fields = get_field_objects(); if( $fields ) { echo '<div class="item-info-custom">';
$fields = get_field_objects();
if( $fields )
{
echo '<div class="item-info-custom">';
echo '<dl class="item-custom">';
echo '<dt class="title"><h4>Custom Information</h4></dt>';
foreach( $fields as $field_name => $field )
{
echo '<dt class="custom-label">' . $field['label'] . ': </dt>';
echo '<dd class="custom-data">' . $field['value'] . '</dd>';
}
echo '</dl>';
echo '</div>';
}
$fields=get_field_objects();
如果($fields)
{
回声';
回声';
回显“自定义信息”;
foreach($fields作为$field\u name=>$field)
{
回显“”。$field['label'].:';
回显'.$field['value'].';
}
回声';
回声';
}
这是我开始工作的最后一段代码:
<?php
$fields = get_field_objects();
if( $fields )
{
echo '<div class="item-info-custom">';
echo '<dl class="item-custom">';
echo '<dt class="title"><h4>Custom Information</h4></dt>';
foreach( $fields as $field_name => $field )
{
echo '<dt class="custom-label">' . $field['label'] . ': </dt>';
echo '<dd class="custom-data">';
if (is_array($field['value'])) {
echo implode(', ', $field['value']);
}
else {
echo $field['value'];
}
echo '</dd>';
}
echo '</dl>';
echo '</div>';
}
?>
您需要进行一些类型检查。您可以使用诸如
is_array()
之类的函数并执行其他逻辑
例如:
echo '<dd class="custom-data">';
if (is_array($field['value'])) {
echo implode(', ', $field['value']);
}
else {
echo $field['value'];
}
echo '</dd>';
echo';
if(是_数组($field['value'])){
回波内爆(',',$field['value']);
}
否则{
echo$字段['value'];
}
回声';
根据$field['value']中数组的组成,您可以执行以下操作之一:
如果这是一个简单的值列表,你可以把它们和内爆放在一起
echo '<dd class="custom-data">' . (is_array($field['value'])?implode(", ", $field['value']:$field['value']) . '</dd>';
echo“”。(是_数组($field['value'])?内爆(“,”,$field['value']:$field['value'])。”;
如果数组包含与主数组类似的数据(带有标签和值键),则可以创建一个函数来呈现数组,并在遇到数组值时递归调用它
<?php
function showFields($data){
echo '<div class="item-info-custom">';
echo '<dl class="item-custom">';
echo '<dt class="title"><h4>Custom Information</h4></dt>';
foreach( $fields as $field_name => $field )
{
echo '<dt class="custom-label">' . $field['label'] . ': </dt>';
if (is_array($field['value'])){
showFields($field['value']);
}
echo '<dd class="custom-data">' . $field['value'] . '</dd>';
}
echo '</dl>';
echo '</div>';
}
$fields = get_field_objects();
if( $fields ) showFields($fields);
如果字段是数组-做一件事如果不是-做另一件事。也许可以使用is_数组函数添加一个附加条件。如果$field是数组,您可以添加一个附加循环。这是我可以使用的一个。我肯定其他人也很在行,我只是不知道如何解决它们。这是我使用的最后一个代码。让我知道如果你看到任何问题,它似乎按照我预期的方式工作。太好了。其他人也有类似的逻辑。他们还演示了一个递归解决方案。但这可能太过分了。谢谢你Jason抽出时间!谢谢你Orangepill抽出时间!