从for循环cakePHP创建数组

时间:2014-06-10 11:52:29

标签: php arrays cakephp

我在cakePHP中创建了一个非常简单的搜索函数,并希望动态地从一个for循环中填充一个数组。

我想创建一个数组,将put作为第二个参数设置在find() - 函数中。

这是我的静态结果:

$result = $this->Book->find('all', array('conditions' => 
      array("Book.book_title LIKE" => "%war%"),
      "OR" => 
      array("Book.book_title LIKE" => "%and%"),
      "OR" =>
      array('Book.book_title LIKE' => "%peace%")
));
$this->set('searchResult', $result);

我的第一个直觉是这样做:

$search = $this->request->query['q'];
$words = explode(" ", $search);
$count = count($words);

然后从中创建一个for循环,但是" OR =>"整合给我带来很多麻烦。 任何人都可以帮助我做这个循环吗?

提前致谢,Jesper。

1 个答案:

答案 0 :(得分:1)

为什么让生活如此复杂? 使用OR一次作为主键,并在其下面使用一个简单的数组:

$conditions = array(
    'OR' => array(
        array('Book.book_title LIKE' => '%term1%'),
        array('Book.book_title LIKE' => '%term2%'),
        ...
    )
)

嵌套数组是必要的,以避免重用相同的数组键(在PHP中不起作用)。

如果它来自爆炸的搜索查询字词,请使用foreach来保持干燥(不要重复自己)

$terms = explode(' ', $his->request->query('q'));
foreach ($terms as $term) {
    $conditions['OR'][] = array('Book.book_title LIKE' => '%' . $term . '%'),
}