CakePHP 将数组元素添加到数组

问题描述 投票:0回答:2

我想我今天的头脑比平常更笨。

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

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

谢谢

php arrays cakephp element
2个回答
1
投票

如果您尝试构建搜索查询(不清楚您的目标是什么),则您的条件应全部位于

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
));

0
投票

就这么简单:

 $array= array();
    foreach ( $colors as $c):
        $uniques[] = $c;   
    endforeach;

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

© www.soinside.com 2019 - 2024. All rights reserved.