PHP:SQL查询数组的最佳方法是什么?(如果可以的话)

PHP:SQL查询数组的最佳方法是什么?(如果可以的话),php,mysql,arrays,Php,Mysql,Arrays,考虑这一点: 一个mySQL数据库,其中包含表、行和数据 具有相同数据的一个数组 现在,通常情况下,我会有一个类似于mySQL的查询SELECT*FROM'table',其中的名称为“%abc%” 但是我想在数组上执行相同的查询,而不必插入它。唯一想到的方法是使用,但语法不同,方法复杂 这里有捷径吗?没有,没有捷径。不能使用SQL查询数组。如果数组包含与数据库表相同的数据,那么它也将是多维的,这意味着数组搜索没有任何用处。您必须手动循环数组并自己执行类似的操作,例如preg_match $dat

考虑这一点:

一个mySQL数据库,其中包含表、行和数据

具有相同数据的一个数组

现在,通常情况下,我会有一个类似于mySQL的查询
SELECT*FROM'table',其中的名称为“%abc%”

但是我想在数组上执行相同的查询,而不必插入它。唯一想到的方法是使用,但语法不同,方法复杂


这里有捷径吗?

没有,没有捷径。不能使用SQL查询数组。如果数组包含与数据库表相同的数据,那么它也将是多维的,这意味着数组搜索没有任何用处。您必须手动循环数组并自己执行类似的操作,例如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;
  }
}

不能将SQL与数组一起使用,但可以使用
array\u filter()

或者如果您使用的是PHP>=5.3.0

$filtered = array_filter($yourArray, 
    function($v) { return strstr($v['name'], 'abc') !== false;});
看到它在行动了吗


编辑: 您也可以尝试:

具有查找信息的方法。它非常好,我认为如果没有CakePHP项目的其余部分,使用它应该不会太困难。

有一个类允许您使用SQL从PHP数组检索数据,尽管我从未使用过它,也无法评论它有多好。开发人员承认它速度很慢,并且不支持整个SQL语法

还有,正如已经提到的


就我个人而言,我倾向于使用array_filter()

我非常怀疑PHP是否有类似于C#linq的东西有一个类在PHP中实现linq,哇,linq在PHP中的存在让人印象深刻。
$filtered = array_filter($yourArray, 
    function($v) { return strstr($v['name'], 'abc') !== false;});
// 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');