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