CakePHP将数组元素添加到数组中

时间:2013-11-15 14:18:01

标签: arrays cakephp elements

我想今天我的头脑比平常多了。

我正在尝试从表单中的文本框中解析文本以生成一个数组,我可以将其传递给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;

这一定是一个常见的要求,所以我希望你们中的一个人能让我直接走狭窄......

由于

2 个答案:

答案 0 :(得分:1)

如果您正在尝试构建搜索查询(不清楚您的目标是什么),那么您的条件应该都在ORAND内的同一个数组中 - 如下所示:< / 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;

没有[]将其视为常规变量。这会将它附加到数组