我可以在if语句中使用变量的值作为键插入吗?

时间:2014-02-07 06:53:33

标签: php arrays if-statement for-loop key-value

不知道我怎么能措辞。基本上我试图这样做,以便当我添加另一个$directory时,我将要做的就是更新它,$results并添加另一个与$directory['databaseName']同名的MySQL列。我的困难在于我的管理小组;其中为了检查描述条目(通过MySQL数据库)作业类型的所有框,我将不得不使用复杂的for循环,其中包含if语句。也许你可以弄清楚我想要做什么并帮助我。如果我能够获得$directory[$i]['databaseName']的值并将其插入if语句以查看$results是否具有该值,因为它的键等于1,这一切都会有用。

$directory=
        array(
            array(
                'linkName' => 'Screen Room',
                'path' => 'sr',
                'databaseName' => 'ScreenRoom',
            ),
            array(
                'linkName' => 'Glass Window',
                'path' => 'gw',
                'databaseName' => 'GlassWindow',
            ),
            array(
                'linkName' => 'Roof-Under-Deck',
                'path' => 'rd',
                'databaseName' => 'RoofUnderDeck',
            ),
        );
$results = array(
                'ID' => '',
                'Invoice' => '',
                'FirstName' => '',
                'LastName' => '',
                'ImagesBefore' => '',
                'ImagesAfter' => '',
                'Description' => '',
                'Testimonial' => '',
                'Date' => '',
                'GlassWindow' => '0',
                'ScreenRoom' => '0');
for ($i=0; $i < count($directory); $i++) {
    if ($results["$directory[$i]['databaseName']"] === 1) {
        echo '<input type="checkbox" checked> ' . $directory[$i]['linkName'];
    }
    else
        echo '<input type="checkbox"> ' . $directory[$i]['linkName'];
    }
}

2 个答案:

答案 0 :(得分:2)

为什么不将它分配给变量&amp; 保持简单。同时使用isset以确保它确实存在,

$key = $directory[$i]['databaseName'];
if (isset($results[$key]) && $results[$key] == 1) {
    echo '<input type="checkbox" checked> ' . $directory[$i]['linkName'];
}
else{
    echo '<input type="checkbox"> ' . $directory[$i]['linkName'];
}

<强> DEMO

答案 1 :(得分:0)

这实际上是一个非常简单的解决方案,我最初认为不会起作用。我猜这就是为什么你不先尝试自己的第一个想法就不要再猜测自己。对于未来可能遇到同样问题的人来说,这是我使用的解决方案。我只是移除了"环绕$directory[$i]['databaseName']并将===更改为仅==

for ($i=0; $i < count($directory); $i++) {
    if ($results[$directory[$i]['databaseName']] == 1) {
        echo '<input type="checkbox" checked>' . $directory[$i]['linkName'];
    }
    else {
        echo '<input type="checkbox">' . $directory[$i]['linkName'];
    }
}