使用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错误任何人都可以帮助我
答案 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'];
}