【问题标题】:array conversion removing index数组转换删除索引
【发布时间】:2018-06-27 09:25:25
【问题描述】:

下面的函数,即 getBooksInsertedCount 代码给出这样的输出

  array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "1"
}

getBooksInsertedCount

function getBooksInsertedCount()
{  
  $this->load->database();    
  $query = "SELECT count(book_id) as count,date(created_date) as cdate FROM `bookdetails` WHERE  (created_date BETWEEN '2018-06-25' AND '2018-06-28') GROUP by created_date order by created_date asc";
  $result = $this->db->query($query);
 $ret = array();

   foreach ($result->result_array() as $row ) {
            $ret[] = $row['count'];
   } 
     return $ret;
  }

预期输出(此处注意:[0]=> 字符串(1)已删除)

array(1, 2, 1);

【问题讨论】:

  • 你发布的当前输出和预期输出是一样的。
  • 只要转换成int就行了$ret[] = $row['count'];
  • 除了intstring 类型有什么区别?
  • 每个数组都有索引:如果你 var_dump $a = [1,2,3] 它会给你array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }

标签: php codeigniter


【解决方案1】:

除了类型(字符串 VS int)之外,您的预期输出与当前输出匹配

如果我正确理解您的问题,您希望删除数组索引。

当创建像 array('first', 'second') 这样的数组时,每个值都会根据其位置分配一个索引,无法删除它(也会使从中选择您需要的东西变得非常困难)。

所以上面的例子实际上匹配array(0 => 'first', 1 => 'second')

【讨论】:

    【解决方案2】:

    您可以使用cast 的值(类型杂耍)。

    改变,

    $ret[] = $row['count'];
    

    到,

    $ret[] = (int) $row['count'];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-01
      • 2013-07-04
      • 2020-10-31
      • 2012-04-22
      • 2012-10-25
      • 2015-07-19
      • 1970-01-01
      相关资源
      最近更新 更多