1

我正在尝试通过使用 2 个数组(其中一个是数组数组)在 PHP 中循环来构建 SQL 查询:

    //build array of arrays using predefined arrays
$regions = array_filter(array($EAPRO, $WCARO, $ROSA, $TACRO, $MENA, $ESARO));

//just a normal array
$regionnames = array('EAPRO', 'WCARO', 'ROSA', 'TACRO', 'MENA', 'ESARO');

$sql = "";

foreach(array_combine($regions, $regionnames) as $region => $regionname)
{
$sql .="UPDATE `database`.`table` SET `region`='$regionname' 
WHERE `countryname` IN (" . implode(",",$region) . ");";
}
echo $sql;

但是,在 ideone 中调试它给了我:

Warning: implode(): Invalid arguments passed on line:
UPDATE `database`.`table` SET `region`='ESARO' WHERE `countryname` IN ();

这告诉我每个循环上的数组没有正确内爆。我定义数组数组的方式有问题吗?

谢谢

4

1 回答 1

1

来自PHP 文档array_combine ( array $keys , array $values )

所以问题是变量在错误的地方array_combine($regions, $regionnames)(一个键永远不能是一个数组)。

所以这应该可以解决问题:

    //build array of arrays using predefined arrays
$regions = array_filter(array($EAPRO, $WCARO, $ROSA, $TACRO, $MENA, $ESARO));

//just a normal array
$regionnames = array('EAPRO', 'WCARO', 'ROSA', 'TACRO', 'MENA', 'ESARO');

$sql = "";

foreach(array_combine($regionnames, $regions) as $region => $regionname)
{
$sql .="UPDATE `database`.`table` SET `region`='$regionname' 
WHERE `countryname` IN (" . implode(",",$region) . ");";
}
echo $sql;
于 2012-10-21T23:20:28.537 回答