我有以下陣列
[
["client_code","contains","12"],
"and",
[
["trade_name","=","KeyWholesaler"],
"or",
["trade_name","=","Cash&Carry"]
],
"and",
[
"!",
["state","=","B-BigCantina"],
["state","=","B-BigCantina2"]
],
"and",
["client_name","contains","M"]
]
我已經創建了一個函式,該函式echo在陣列上方遞回進入MySqlwhere 查詢。我知道它很亂,但我能做的最好的事情就是讓它作業。
function testing($array) {
if(is_array($array) && count($array) == count($array, COUNT_RECURSIVE)) {
$is_not = $_SESSION["NOT"];
$and = $_SESSION["NOT"] ? " AND" : "";
echo "`$array[0]` $is_not$array[1] '$array[2]' $and";
echo "";
} else if(is_array($array)) {
echo "(";
foreach ($array as $key => $value) {
testing($value);
}
echo ")";
$_SESSION["NOT"] = "";
} else if($array == "!") {
$_SESSION["NOT"] = "!";
} else {
echo $array;
echo "";
}
}
使用給定陣列的以下函式的輸出為
(`client_code` contains '12' and(`trade_name` = 'KeyWholesaler' or`trade_name` = 'Cash&Carry' )and(`state` != 'B-BigCantina' AND`state` != 'B-BigCantina2' AND)and`client_code` contains '21' )
現在這個函式只是回顯以下輸出,但我想把它放到一個變數中。
抱歉所有格式和糟糕的英語。:)
uj5u.com熱心網友回復:
您可以從函式內部回傳并附加為字串以使函式遞回
function testing($array) {
if(is_array($array) && count($array) == count($array, COUNT_RECURSIVE)) {
$is_not = $_SESSION["NOT"];
$and = $_SESSION["NOT"] ? " AND" : "";
return "`$array[0]` $is_not$array[1] '$array[2]' $and";
} else if(is_array($array)) {
$val = "";
foreach ($array as $key => $value) {
$val = $val . testing($value);
}
$_SESSION["NOT"] = "";
return "(".$val.")";
} else if($array == "!") {
$_SESSION["NOT"] = "!";
} else {
return $array;
}
}
echo testing([]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/371665.html
