PHP将$ variable保留在if语句的范围之外

时间:2011-01-18 21:21:05

标签: php

我从另一位开发者那里拿到了一个项目,我正在尝试完成并清理一下。这部分代码在检查语言cookie后从数据库中呈现产品:

                            <?php if (get_cookie('spanish')) : ?>
                                <?php if ($product['details_spanish'] != '') : ?>
                                    <?php $details = explode(':',$product['details_spanish']); ?>
                                    <h3>Especificaciones</h3>
                                <?php else : ?>
                                    <?php if ($product['details'] != '') : ?>
                                        <?php $details = explode(':',$product['details']); ?>
                                        <h3>Especificaciones</h3>
                                    <?php endif ?>
                                <?php endif; ?>

                            <?php else : ?>
                                <?php if ($product['details'] != '') : ?>
                                    <?php $details = explode(':',$product['details']); ?>
                                    <h3>Specifications</h3>
                                <?php endif; ?>

                            <?php endif; ?>
                            <ul>
                            <?php if ($details) : ?>
                                <?php foreach ($details as $detail) : ?>
                                <?php $detail = split(',',$detail); ?>
                                <?php if ($detail[0] != '' && $detail[1] != '') : ?>
                                <li>
                                    <strong><?=ucwords($detail[0])?></strong> : <?=$detail[1]?>
                                </li>
                                <?php endif; ?>
                                <?php $i++; ?>
                                <?php endforeach; ?>
                            <?php endif; ?>

抱歉,我知道由于不一致和编码错误(最初不是我的项目)很难阅读。它正在做的是检查用户机器上的西班牙语cookie。如果找到它,它会从西班牙语中提取值表的列而不是常规。如果表中没有西班牙语值,它会回退到英语值。此外,它创建一个$details变量,其中包含数据库的一个值,并将其拆分:所在的位置。

我遇到的问题是某些产品,它给我一个错误,说它无法找到$ details变量,我假设它是因为变量不在第一个范围之外。 {1}}陈述?

我真的是一个PHP菜鸟,但即使我知道这不是一个好习惯。有没有更好的方法来清理它并让我的$ detail变量可用?

1 个答案:

答案 0 :(得分:4)

快速解决方法是在最顶层预先初始化该变量:

<?php $details = ''; ?>