我知道我的问题有点奇怪,但我正在编写的函数需要这个。 我为此苦苦挣扎了一段时间。
假设我有以下数组:
$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/