Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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 foreach循环中处理变量数据_Php_Wordpress - Fatal编程技术网

如何在PHP foreach循环中处理变量数据

如何在PHP foreach循环中处理变量数据,php,wordpress,Php,Wordpress,我正在WordPress主题中使用PHP5.6.30。我正在学习有关foreach循环的更多信息 下面是我的原始代码示例 $acf_opt01 = "it_development_projects"; $acf_opt01_field = get_field_object($acf_opt01); echo '<h4>' . $acf_opt01_field['label'] . '</h4>';

我正在WordPress主题中使用PHP5.6.30。我正在学习有关foreach循环的更多信息

下面是我的原始代码示例

            $acf_opt01 = "it_development_projects";
            $acf_opt01_field = get_field_object($acf_opt01);
            echo '<h4>' . $acf_opt01_field['label'] . '</h4>'; 
            echo $acf_opt01_field['value'];

            $acf_opt02 = "it_enhancements";
            $acf_opt02_field = get_field_object($acf_opt02);
            echo '<h4>' . $acf_opt02_field['label'] . '</h4>'; 
            echo $acf_opt02_field['value'];
我不确定当使用
$key
连接时,foreach循环中如何处理变量,或者是否有更好的方法来完成此过程。在foreach循环中完成这个小练习的建议是什么,以便它产生与我的原始语句相同的结果

非常感谢

像这样

$array_acf_names = array(
    'it_development_projects',
    'it_enhancements'
);

foreach($array_acf_names as $key=>$acfname) {
    $acf_field = get_field_object(acfname);
    echo '<h4>' . $acf_field['label'] . '</h4>'; 
    echo $acf_field['value'];
}
在原始的
$acf\u opt01=“it\u development\u projects”
中,该字符串现在位于您循环的数组中,因此按照您的方式,它现在是
$acfname
变量

在第一次迭代中

$acfname=$acf\u opt01=“it\u开发项目”

这样就不需要为它创建额外的变量,所以我们可以将它放在
get\u field\u object()
函数中。然后,我们只需要使我们需要创建的其他变量更加通用
$acf_字段
而不是
$acf_opt01_字段
$acf_opt02_字段
,然后只输出HTML内容

然后在第二次迭代中

$acfname=$acf_opt02=“it_增强”
,其余的基本相同


如您所见,您可以在不使用
$key=>
部分的情况下执行循环。不过,把它放在里面也不会有什么坏处。

我的答案的主要区别在于它设置了一个数组($fieldObjs),在最初加载后可以部分或完全访问该数组。这让您可以在开始时准备它,然后在页面中使用它——或者您甚至可以使用json_encode()字段对象数组,并在需要时与Javascript一起在页面上创建字段对象,而不是在开始时一次使用PHP:)

不管怎样,这都会解决你的问题。第一个版本是您拥有的最小回音,第二个部分显示字段对象的数组存储:)


当您在二维数组中使用foreach时,“as”之前的值将从数组的每个位置获取值,这段代码可能会有所帮助

<?php
    $array_acf_names = array(
        'it_development_projects',
        'it_enhancements'
    );
    $cont=0;
    foreach($array_acf_names as $key) { //$key get the value from each value of the array (if the array is bidimensional)
         echo '<h4>'.$key.'</h4>'; 
         echo $cont; //print the 'position' of the array
         $cont++;
    }
?>

因此,在foreach循环中使用key没有实际意义,因为您不会使用它,如果您没有在循环之外使用var,那么让var赋值也没有实际意义

        $array_acf_names = array(
            'it_development_projects',
            'it_enhancements'
        );
        foreach($array_acf_names as $acfname) {
            $acf_field = get_field_object($acfname);
            echo '<h4>' . $acf_field['label'] . '</h4>'; 
            echo $acf_field['value'];
        }
$array\u acf\u names=array(
“it发展项目”,
“it_增强”
);
foreach($array\u acf\u名称为$acfname){
$acf\u field=get\u field\u对象($acfname);
回显'.$acf_字段['label'].';
echo$acf_字段['value'];
}

嘿,大多数答案在这里都适用。问题是什么?您是否考虑过使用for循环。它们更有效和更快:我既包含了前文,也包括在我的答案中,所以你可以选择。谢谢。Nord.Org,我没有考虑过for循环,但是我会考虑它!谢谢你所有的创意,谢谢你分解我的全部代码并给我指点。当然,没问题,很高兴我能帮上忙
<?php 
$array_acf_names = array(
    'it_development_projects',
    'it_enhancements'
);

foreach($array_acf_names as $acfName) {
  $fieldObj = get_field_object($acfName);
  echo "<h4>{$fieldObj['label']}</h4>
  {$fieldObj['value']}";  
}
?>
<?php 
$array_acf_names = array(
    'it_development_projects',
    'it_enhancements'
);

$numAcf = count($array_acf_names);
for($acfLoop = 0; $acfLoop < $numAcf; $acfLoop++){
  $fieldObj = get_field_object($acfName);
  echo "<h4>{$fieldObj['label']}</h4>
  {$fieldObj['value']}";
}
?>
 <?php 
    $array_acf_names = array(
        'it_development_projects',
        'it_enhancements'
    );

$fieldObjs = array(); 
foreach($array_acf_names as $acfName) {
  $fieldObjs[$acfName] = get_field_object($acfName);
}
print_r($fieldObjs); // look at this and then you can look at how to declare vars 
// example... 
// echo $fieldObjs["it_enhancements"]["label"]; 
?>
<?php
    $array_acf_names = array(
        'it_development_projects',
        'it_enhancements'
    );
    $cont=0;
    foreach($array_acf_names as $key) { //$key get the value from each value of the array (if the array is bidimensional)
         echo '<h4>'.$key.'</h4>'; 
         echo $cont; //print the 'position' of the array
         $cont++;
    }
?>
        $array_acf_names = array(
            'it_development_projects',
            'it_enhancements'
        );
        foreach($array_acf_names as $acfname) {
            $acf_field = get_field_object($acfname);
            echo '<h4>' . $acf_field['label'] . '</h4>'; 
            echo $acf_field['value'];
        }