mysql PHP:如何使用SQL查询数组?(如果可以的话)

au9on6nz  于 2023-03-28  发布在  Mysql
关注(0)|答案(4)|浏览(165)

想想这个:
一个包含表、行和数据的mySQL数据库。
具有相同数据的一个数组。
现在,通常情况下,我会对mySQLSELECT * FROM 'table' WHERE name LIKE '%abc%'进行如下查询
但是我想在数组上执行相同的查询,而不必插入它。唯一想到的方法是使用array_search,但是语法不同,方法复杂。
这里有近路吗?

9q78igpj

9q78igpj1#

你不能在数组中使用SQL,但是你可以使用array_filter()来完成你的例子:

function like_abc($v) {
    return strstr($v['name'], 'abc') !== false;
}

$filtered = array_filter($yourArray, 'like_abc');

或者如果你使用的是PHP〉= 5.3.0

$filtered = array_filter($yourArray, 
    function($v) { return strstr($v['name'], 'abc') !== false;});

ideone上查看实际应用
您也可以尝试PHPLinq

// UNTESTED CODE!
$yourArray = array (
    array('name' => 'abcd', 'age' => 20),
    array('name' => 'dacb', 'age' => 45),
    array('name' => 'aadd', 'age' => 32),
    array('name' => 'babc', 'age' => 11),
    array('name' => 'afgb', 'age' => 17),
);

$result = from('$people')->in($yourArray)
            ->where('$people["name"] => strstr($people["name"], "abc") !== false')
            ->select('$people');
cnwbcb6i

cnwbcb6i2#

CakePHP有一个Set::extract方法,uses XPath query strings用来查找信息。它非常好,我认为如果没有CakePHP项目的其余部分,使用它应该不会太难。

z3yyvxxp

z3yyvxxp3#

有一个sql4array类,它允许你使用SQL从PHP数组中检索数据,尽管我从来没有使用过它,也不能评论它有多好。开发人员承认它很慢,并且不支持SQL语法的全部。
如前所述,还有PHPLinq
我个人倾向于使用array_filter()

68bkxrlz

68bkxrlz4#

不,没有快捷方式。你不能用SQL查询数组。如果你的数组包含与数据库表相同的数据,那么它也将是多维的,这意味着array_search没有用。你必须手动循环数组并自己执行类似的操作,例如preg_match。

$data = array(
  array('name' => 'foo abc bar', 'lorem' => 'ipsum'),
  array('name' => 'etc', 'lorem' => 'dolor')
);
$matches = array();
foreach ($data as $row) {
  if (preg_match('/^.*abc.*$/', $row['name']) {
    $matches[] = $row;
  }
}

相关问题