我想今天我的头脑比平常多了。
我正在尝试从表单中的文本框中解析文本以生成一个数组,我可以将其传递给cakePHP中的find方法。
我使用php正则表达式生成输入术语的数组(包括“包含在语音标记中的短语”作为单个项目)
这可能如下所示:
array(
(int) 0 => 'test',
(int) 1 => 'this out',
(int) 2 => 'now')
在cakePHP cookbook中,它说我必须得到一个看起来像这样的数组(使用上面的例子):
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;
这一定是一个常见的要求,所以我希望你们中的一个人能让我直接走狭窄......
由于
答案 0 :(得分:1)
如果您正在尝试构建搜索查询(不清楚您的目标是什么),那么您的条件应该都在OR
或AND
内的同一个数组中 - 如下所示:< / p>
$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
));
答案 1 :(得分:0)
就像这样简单:
$array= array();
foreach ( $colors as $c):
$uniques[] = $c;
endforeach;
没有[]将其视为常规变量。这会将它附加到数组