0

我有一个函数调用 extractValues() 并有一个带有条件运算符的数组来传递它。我真正需要的是,拆分字符串和运算符。例如:

$arr = array('username='=> 'Alex','id >'=>'4');
extractValues($arr);

我需要拆分 $arr 键中可用的运算符和字符串并存储到两个单独的变量中。请记住,所有数组键都是动态的。字符串和条件运算符之间可能有空格,也可能没有。

数组键中预期的运算符是:

$operators = array('=','!=', '<', '<=', '>', '>=', 'like', 'clike', 'slike', 'not', 'is', 'in', 'between', 'and', 'or');
4

1 回答 1

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"
  }
}
于 2013-01-22T10:14:34.753 回答