Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 转储数组_Php_Arrays - Fatal编程技术网

Php 转储数组

Php 转储数组,php,arrays,Php,Arrays,我有一个相当基本的Wordpress高级自定义字段设置。我需要在自定义帖子中添加额外的字段,然后在帖子页面上显示它们。我有这段代码,但当我进入一个有多个复选框选择的自定义字段时,很明显,这个特定字段转储了单词“array”,因为它是一个数组 如何在下面编写代码,转储常规字段以及包含数组的字段的所有标签和数据 $fields = get_field_objects(); if( $fields ) { echo '<div class="item-info-custom">';

我有一个相当基本的Wordpress高级自定义字段设置。我需要在自定义帖子中添加额外的字段,然后在帖子页面上显示它们。我有这段代码,但当我进入一个有多个复选框选择的自定义字段时,很明显,这个特定字段转储了单词“array”,因为它是一个数组

如何在下面编写代码,转储常规字段以及包含数组的字段的所有标签和数据

$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抽出时间!