PHP - 默认情况下检查数组元素是否有键或者它的键是自动的

标签 php mysql arrays function

我知道我的问题有点奇怪,但我正在编写的函数需要这个。 我为此苦苦挣扎了一段时间。

假设我有以下数组:

$array = array(
    "column1" , 
    "column2" , 
    "column3"=>"value3" , 
    "7"=>"value5" , 
    "8"=>"value6" 
);

$array 有带键的元素(默认设置)和没有键的元素。 我知道没有键的元素将为其设置数字自动键。

我正在尝试编写一个函数,将此数组转换为以下 MYSQL 选择语句:

SELECT `column1` , `column2` , `column3` , `1` , `0` FROM table WHERE column3 = 'value3' AND 1 = 'value5' AND 0 = 'value6';

Mysql表名可以是数字。

我卡在我的函数中,我必须检查数组元素是否具有由 php 设置或由用户发送的键。

到目前为止我的函数形式:

//Function that converts WHERE simple statement to Array
function arrayToQuery($array){
    if(is_array($array)){
        $selectedColumns = array();
        $whereColumns = array();
        foreach($array as $key=>$value){
            //This is where I'm stuck, I can't write the is_automated() function
            if(!is_automated($key)){
                $whereColumns[$key] = $value;
            }
            $selectedColumns[] = $key;
        }
        $sql = "SELECT " . join(",", $selectedColumns) . " WHERE ";
        foreach($whereColumns as $column=>$value){
            $sql .= $column . " = " . $value . " AND ";
        }
        $sql .= " 1=1 ";
        return $sql;
    }
    return false;
}

我卡在了 is_automated() 函数上,我无法检查任何一个键是否是自动的。

谢谢

最佳答案

您的示例数组正在覆盖前 2 个元素。我跑了这个:

$array = array(
        "column1" ,
        "column2" ,
        "column3"=>"value3" ,
        "1"=>"value5" ,
        "0"=>"value6"
);
print_r($array);

得到这个输出:

Array
(
    [0] => value6
    [1] => value5
    [column3] => value3
)

关于PHP - 默认情况下检查数组元素是否有键或者它的键是自动的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29734268/

相关文章:

php - symfony fosuserbundle 自定义登录

php - 编码时为什么要格式化以及如何格式化

php - 循环不写正确的值

mysql - 如何更改mysql中的局部变量并保持对其自身的引用?

mysql - 我可以使用 Group By 计算多列吗?

c++ - 类递归数组

php - 如何从 codeigniter Controller 访问站点 url 或基本 url?

php - 如何汇总 mysql 请求的 ORDER BY 部分中的多个 int 列?

objective-c - stringWithUTF8String : do and how it works 是什么

python - 添加许多具有重叠索引和列的 pandas 数据框