Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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_Arrays_Foreach_Count - Fatal编程技术网

组php foreach循环(闭合)

组php foreach循环(闭合),php,arrays,foreach,count,Php,Arrays,Foreach,Count,如何将php foreach分组?我已经尝试了5天,但仍然无法使其工作 我不知道php foreach如何工作,但我正在学习, 谢谢大家的建议 原始php: <?php if(isset($this->leading) && count($this->leading)): ?> <?php foreach($this->leading as $key=>$item): ?> <?php

如何将php foreach分组?我已经尝试了5天,但仍然无法使其工作 我不知道php foreach如何工作,但我正在学习, 谢谢大家的建议

原始php:

<?php if(isset($this->leading) && count($this->leading)): ?>
        <?php foreach($this->leading as $key=>$item): ?>
            <?php

                $this->item=$item;
                echo $this->loadTemplate('item');
            ?>
        <?php endforeach; ?>
    <?php endif; ?>


    <?php if(isset($this->primary) && count($this->primary)): ?>
        <?php foreach($this->primary as $key=>$item): ?>
            <?php

                $this->item=$item;
                echo $this->loadTemplate('item');
            ?>
        <?php endforeach; ?>
    <?php endif; ?>


    <?php if(isset($this->secondary) && count($this->secondary)): ?>
        <?php foreach($this->secondary as $key=>$item): ?>          
            <?php

                $this->item=$item;
                echo $this->loadTemplate('item');
            ?>
        <?php endforeach; ?>
    <?php endif; ?>

我试过了

<?php if(isset($this->leading) && count($this->leading)) && (isset($this->primary) && count($this->primary)) && (isset($this->secondary) && count($this->secondary)): ?>
    <!-- Leading items -->
        <?php foreach (array($this->leading, $this->primary, $this->secondary) as $key=>$item)          ($this->leading as $key=>$item): ?>
            <?php
                // Load category_item.php by default
                $this->item=$item;
                echo $this->loadTemplate('item');
            ?>
        <?php endforeach; ?>
    <?php endif; ?>

但不起作用

一如既往,我们感谢您的帮助

谢谢!每个人:)


谢谢你,史蒂文

你的意思是这样的吗

<?php

$arr = array();
$arr[] = $this->leading;
$arr[] = $this->primary;
$arr[] = $this->secondary;

foreach($arr as $v) {    
    if(is_array($v) && (count($v) > 0)) {
        foreach($v as $item) {
            $this->item=$item;
            echo $this->loadTemplate('item');
        }
    }
}

?>

定义如下函数:

function foobar ($tmp) {
    if(isset($tmp) && count($tmp)) { 
        foreach ($tmp as $key => $item) {
            // Load category_item.php by default
            $this->item = $item;
            echo $this->loadTemplate('item');
        }
    }   
}
并将其与您的数据一起调用:

foobar($this->leading);
foobar($this->primary);
foobar($this->secondary);

处理此问题的最简单方法是首先构建一个包含所有所需项的列表,然后仅使用一个foreach循环遍历该列表

我还建议在是否定义了三个变量(前导、主要、次要)时保持一致。如果您可以保证它们已设置并且是数组-即使它们是空数组,也可以使您的代码变得如此简单:

<?php
$items = array_merge($this->leading, $this->primary, $this->secondary);
foreach ($items as $Item) {
    $this->item = $item;
    $this->loadTemplate('item');
}
?>

如果您真的不知道是否设置了变量,并且无法在其他地方重构代码来更改此设置,您可以这样做:

<?php
$items = array();
if (isset($this->leading)) $items = array_merge($items, $this->leading);
if (isset($this->primary)) $items = array_merge($items, $this->primary);
if (isset($this->secondary)) $items = array_merge($items, $this->secondary);
foreach ($items as $Item) {
    $this->item = $item;
    $this->loadTemplate('item');
}
?>


你为什么在每行上都使用
?我不明白为什么你可以在一个标记中编写所有代码,却在每行上都把代码和标记弄乱了?你真的很喜欢在每行代码中都有
,不是吗?但这真的很奇怪。请重新格式化它-很难阅读。你到底想做什么?这3个“foreach”似乎每个都做了不同的事情,所以我认为它们都应该保留……对不起,我不知道php foreach是如何工作的,但我正在学习它谢谢你的建议M42:)