我有一个函数调用extractValues()并且有一个带有条件运算符的数组来传递它。我真正需要的是,拆分字符串和运算符。例如:
$arr = array('username='=> 'Alex','id >'=>'4');
extractValues($arr);
我需要拆分$ arr键中可用的运算符和字符串,并存储到两个单独的变量中。记住所有数组键都是动态的。字符串和条件运算符之间可能存在空格,也可能不存在。
数组键中预期的运算符是:
$operators = array('=','!=', '<', '<=', '>', '>=', 'like', 'clike', 'slike', 'not', 'is', 'in', 'between', 'and', 'or');
答案 0 :(得分:0)
除了其他可能性之外,您还可以使用preg_match()
来实现此目的。我不确定我是否理解你的问题,但我已经做好了准备和应该有所帮助的榜样。它将原始数组转换为具有以下结构的数组:
array(
array('key', 'operator', 'value'),
array('key', 'operator', 'value'),
array('key', 'operator', 'value'),
// ...
)
代码如下:
$arr = array('username='=> 'Alex','id >'=>'4');
$result = extractValues($arr);
var_dump($result);
function extractValues($arr) {
$pattern = '/([A-Za-z_]+[A-Za-z_0-9]?)[ ]?(!=|=|<=|<|>=|';
$pattern .= '>|like|clike|slike|not|is|in|between|and|or)/';
$result = array();
foreach($arr as $key => $value) {
preg_match($pattern, $key, $matches);
$result []= array($matches[1], $matches[2], $value);
}
return $result;
}
输出如下:
array(2) {
[0] =>
array(3) {
[0] =>
string(8) "username"
[1] =>
string(1) "="
[2] =>
string(4) "Alex"
}
[1] =>
array(3) {
[0] =>
string(2) "id"
[1] =>
string(1) ">"
[2] =>
string(1) "4"
}
}