使用php中的for循环将数组值存储在另一个数组中

时间:2016-05-03 11:06:27

标签: php yii

使用php中的for循环将数组值存储在另一个数组中

    $sql = "select id,user_email,username,full_name from registration";        
    $connection = Yii::app()->db;
    $command = $connection->createCommand($sql);
    $rows = $command->queryAll();
    $email_arr = []; 
       for ($i=0; $i <=count($rows); $i++) { 
          $email_arr[] = $rows[$i]['user_email'];
       }

我得到未定义的偏移39 php错误任何人都可以帮助我

3 个答案:

答案 0 :(得分:1)

for ($i=0; $i < count($rows); $i++) {

答案 1 :(得分:1)

这不起作用,因为您使用的是$i <= count($rows)而不是$i < count($rows),因为数组从0开始,而数组的最后一个索引是count - 1

$rows[count($rows)]超出了数组的范围,这就是为什么你得到“未定义的偏移量”。

您可以使用foreach之类的方式使您的写作更易于维护:

$email_arr = [];
foreach ($rows as $row) {
    $email_arr[] = $row['user_email'];
}

可以说更好的方法是map the array in a functional way喜欢:

$email_arr = array_map(function($row) {
    return $row['user_email'];
}, $rows);

答案 2 :(得分:0)

使用条件如下:只有当你的数组有39个元素时才使用“小于”,那么数组将从0开始并以38结束,这将是38&lt; 39.数组的下标以0开头。

   for ($i=0; $i < count($rows); $i++) { 
      $email_arr[] = $rows[$i]['user_email'];
   }