PHP foreach关联数据

时间:2013-02-07 10:12:34

标签: php joomla

我的PHP不太好我正在尝试为joomla构建一个小模块,目前我有这个代码:

<?php $a = array(1, 2, 3, 4); ?>
    <div class="bannercontainer">
        <ul>
<?php foreach($a as $v): ?>
    <li data-transition="fade" data-startalign="left,bottom" data-zoom="in" data-zoomfact="5" data-endalign="center,top" data-panduration="12" data-colortransition="4">
        <img alt="" src="images/slides/image1.jpg" data-thumb="images/thumbs/thumb1.jpg">
        <div class="creative_layer">
            <div class="clear"></div>
        </div>
    </li>
<?php endforeach; ?>
        </ul>
    </div>
</div>

基本上foreach数组中的数字为滑块生成一个列表项awith图像等但是我如何将其他东西与它相关联,以便它生成但也取决于xml文件中的设置它也是例如改变<li data-transition="fade" data-startalign="left,bottom" data-zoom="in" data-zoomfact="5" data-endalign="center,top" data-panduration="12" data-colortransition="4"> - 此缩放效果以及图像路径等。

任何帮助都非常感谢..谢谢。

3 个答案:

答案 0 :(得分:3)

只需将更多信息添加到传递给foreach的数组中,例如:

$banners = array(
    0 => array('color' => 'blue'),
    1 => array('color' => 'red', 'animation' => 'fade'),
    2 => array('color' => 'green', 'animation' => 'slide'),
);

然后你可以在你的foreach中使用它:

foreach($banners as $banner) {
    echo $banner['color'];
}

答案 1 :(得分:1)

您需要预定义这些值并将它们存储在您使用的数组中。并且不要直接打印出来。最好存储输出并在结尾打印出来:

$a = array(
        array(
            'data-transition' => 'fade',
            'data-startalign' = > 'left,bottom',
            ...
            'data-thumb' => 'images/thumbs/thumb1.jpg'
        ),
        array(
            'data-transition' => 'no-fade',
            'data-startalign' = > 'top,bottom',
            ...
            'data-thumb' => 'images/thumbs/thumb2.jpg'
        )
        ...
    );

$output = '<div class="bannercontainer">
             <ul>';
foreach( $a as $v ) {
    $output .= '<li data-transition="'.$v['data-transition'].'" data-startalign="'.$v['data-startalign'].'" data-zoom="in" data-zoomfact="5" data-endalign="center,top" data-panduration="12" data-colortransition="4">
        <img alt="" src="'.$v['data-thumb'].'" data-thumb="'.$v['data-thumb'].'">
        <div class="creative_layer">
            <div class="clear"></div>
        </div>
    </li>';
}

$output .= '</ul>
    </div>';

echo $output;

基本上你现在正在做的是创建一个大小为4的循环并打印出相同的东西。

答案 2 :(得分:0)

如果设置保存在模块的.xml文件中,您可以使用$params->get('param_name');从xml中获取数据。