【问题标题】:explode an array and add array keys爆炸数组并添加数组键
【发布时间】:2011-06-07 15:12:31
【问题描述】:

我有一个看起来像这样的字符串,

IT、媒体、广告

然后我正在执行以下代码。

$criteria = explode(",", $string);

当 print_r 在 $criteria 上运行时,这显然会创建以下内容。

array([0] => IT, [1] => 媒体, [2] => '广告')

我在 codeigniter 应用程序中使用 $criteria 来匹配数据库中的关键字,我想使用类似的东西,

$this->db->like($criteria);

虽然我需要 $criteria 数组看起来像这样,但要让它工作,

array([sector] => IT, [sector] => MEDIA, [sector] => 'ADVERTISING')

我该怎么做?

【问题讨论】:

  • 检查代码/文档,你可能需要像array('sector' => array('IT', 'MEDIA', 'ADVERTISING'))这样的数组

标签: php arrays associative-array array-key


【解决方案1】:

PHP 不能有多个具有相同键的值。

【讨论】:

  • gee .. 我从提交“解决方案”到 5 秒 :)
  • +1 没有什么可包括的,除了没有语言能够做到这一点。 :) @Jordan:它确实回答了这个问题;它根本不可能创建这样一个数组。这就像在问“如何用我的车飞到月球?”。唯一的答案是“不可能!” :D
  • @Jordan - 它通过说这是不可能的来回答问题,这是一个 100% 正确的答案
  • 我如何使用基于爆炸字符串的 codeigniter 活动记录器进行多个喜欢,它的长度可以是可变的.....所以卡住了!
  • 它并没有解决用户的问题,即如何在CodeIgniter中使用给定的$string或$criteria执行这个查询。这个“答案”并不比“RTFM”更能帮助发帖者解决他的实际问题。
【解决方案2】:

你不能像这样构建一个数组。数组的键是相同的,所以值会互相覆盖。

另外我认为你要找的方法是where_in():

$names = array('Frank', 'Todd', 'James');

$this->db->where_in('username', $names);

// Produces: WHERE username IN ('Frank', 'Todd', 'James')

【讨论】:

    【解决方案3】:

    如果您尝试使用这样的数组创建 OR WHERE 子句:

    $criteria = array(
        0 => 'IT',
        1 => 'MEDIA',
        2 => 'ADVERTISING',
    )
    

    您可以遍历它并使用like()or_like() 方法:

    foreach ($criteria as $index => $value) {
        if ($index == 0)
            $this->db->like('sector', $value);
        else
            $this->db->or_like('sector', $value);
    }
    
    // Produces WHERE sector LIKE '%IT%' OR sector LIKE '%MEDIA%' OR sector LIKE '%ADVERTISING%';
    

    【讨论】:

      【解决方案4】:

      像这样创建数组criteria 怎么样:

      $criteria = array('sector'=>explode(",", $string));
      

      输出

      var_dump($criteria);
      
      array(1) {
        ["sector"]=>
        array(3) {
          [0]=>
          string(2) "IT"
          [1]=>
          string(6) " MEDIA"
          [2]=>
          string(12) " ADVERTISING"
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多