我想我今天的头脑比平常更笨。
我正在尝试从表单中的文本框中解析文本以生成一个数组,我可以将其传递给 cakePHP 中的 find 方法。
我使用 php 正则表达式生成输入术语的数组(包括“语音标记中包含的短语”作为单个项目)
这可能看起来像这样:
array(
(int) 0 => 'test',
(int) 1 => 'this out',
(int) 2 => 'now')
在 cakePHP 食谱中,它说我必须获得一个看起来像这样的数组(使用上面的示例):
array(
array('ProjectDocumentSectionVariable.variable_description LIKE' => '%test%'),
array('ProjectDocumentSectionVariable.variable_description LIKE' => '%this out%'),
array('ProjectDocumentSectionVariable.variable_description LIKE' => '%now%'))
尽我所能,我最终得到的数组看起来不像数组的数组。
通常我会得到这个看起来很可怕的东西:
array(
(int) 0 => array(
'ProjectDocumentSectionVariable.variable_description LIKE' => '%test%'
),
(int) 1 => array(
'ProjectDocumentSectionVariable.variable_description LIKE' => '%this out%'
),
(int) 2 => array(
'ProjectDocumentSectionVariable.variable_description LIKE' => '%now%'
))
上面的代码是:
$i = 0;
foreach($matches[1] as $match) :
$searcharray['ProjectDocumentSectionVariable.variable_description LIKE'] = "%" . $match . "%";
array_push($array_full,$searcharray);
$i++;
endforeach;
这一定是一个常见的要求,所以我希望你们中的一个人能让我走上一条狭窄的直道......
谢谢
如果您尝试构建搜索查询(不清楚您的目标是什么),则您的条件应全部位于
OR
或 AND
内的同一数组中 - 如下所示:
$searchResults = $this->find('all', array(
'conditions' => array(
'OR' => array(
'ProjectDocumentSectionVariable.variable_description LIKE' => '%test%',
'ProjectDocumentSectionVariable.variable_description LIKE' => '%this out%',
'ProjectDocumentSectionVariable.variable_description LIKE' => '%now%'
)
)
));
如果你想在
foreach()
循环中构建它,你可以这样做:
$conditions = array('OR' => array());
$matches = array('test', 'this out', 'now');
foreach($matches as $match) {
array_push($conditions['OR'], array('variable_description LIKE' => '%' . %match . '%'));
}
$searchResults = $this->find('all', array(
'conditions' => $conditions
));
就这么简单:
$array= array();
foreach ( $colors as $c):
$uniques[] = $c;
endforeach;
没有 [] 会将其视为常规变量。这会将其附加到数组中