![](/img/trans.png)
[英]Loop through an array and save in database multiple records Laravel php
[英]Loop through database records
我試圖遍歷所有用戶。
首先,我獲取用戶:
include 'database.php';
$records = $conn->prepare('SELECT username FROM users WHERE role = :role');
$user = "user";
$records->bindParam(':role', $user);
$records->execute();
$results = $records -> fetchAll();
我得到了所有這樣的用戶:
foreach( $results as $row ) {
echo $row[0]."</br>";
}
結果是:
Madses
hans
henk
Piet
Peter
Frek
desley
我下面有另一個代碼,看起來像這樣:
foreach( $results as $row ) {
echo $row[0]."</br>";
}
$array = $row;
function getFirstValues(&$array, $amount){
for($i=0; $i<$amount; $i++){
echo $array[0];
$shift = array_shift($array);
array_push($array, $shift);
}
echo "<br />";
}
getFirstValues($array, 4);
getFirstValues($array, 4);
getFirstValues($array, 4);
getFirstValues($array, 4);
getFirstValues($array, 4);
但這呼應:
desley desley desley desley
desley desley desley desley
desley desley desley desley
desley desley desley desley
desley desley desley desley
這不是應該的。 它應該以名字開頭,然后是第二個名字,依此類推。 任何想法為什么這不起作用我想要它嗎?
所需的輸出應為:
madses hans henk piet
peter frek desley madses
hans henk piet peter
frek desley madses hans
henk piet peter frek
當你做$array = $row;
,您已將$array
設置為結果集中的最后一行,因此稍后在getFirstValues($array, 4);
使用它時getFirstValues($array, 4);
,您只需要處理那一行。 所以首先,不要那樣做。 :)您可以只使用getFirstValues($results, 4);
代替。
之后的問題是,在getFirstValues
函數中, $array[0]
將是一個數組(一行)而不是字符串。 如果將其更改為$array[0][0]
,它將從行中獲取字符串,然后應獲得期望的輸出。
一些額外的建議-完全可選,因為您已經可以使用。
使用$results = $records->fetchAll(PDO::FETCH_COLUMN);
獲得字符串數組而不是數組數組可以簡化操作,因為無論如何您只選擇一個列。
另外,您可以通過使用一些數學運算來避免進行大量的array_shift
/ array_push
函數調用,從而實現對循環數組的訪問。
$rows = 5;
$cols = 4;
$area = $rows * $cols;
$size = count($results);
for ($i=0; $i < $area; $i++) {
echo $results[$i % $size] . ' ';
if (($i + 1) % $cols == 0) echo '<br>';
}
對一件簡單的事情如此詳細,請嘗試:
include 'database.php';
$records = $conn->prepare('SELECT username FROM users WHERE role = :role');
$user = "user";
$records->bindParam(':role', $user);
$records->execute();
$results = $records -> fetchAll();
I get all the users like this:
function getFirstValues(&$array, $amount){
$i = 0;
foreach($array as $row ) {
if ($i != 0 && $i % ($amount-1) == 0) echo $row[0],'</br>';
else echo $row[0];
$array[$i] = (isset($array[$i+1])) ? $array[$i+1] : $array[0];
$i++;
}
echo $names;
}
getFirstValues($results, 4);
getFirstValues($results, 4);
getFirstValues($results, 4);
getFirstValues($results, 4);
您需要享受引用結果數組的絕妙想法!
更換
foreach( $results as $row ) {
echo $row[0]."</br>";
}
$array = $row;
與
$array = array();
foreach( $results as $row ) {
$array[] = $row[0];
}
您僅獲得數據集中的姓,因為當前您正在將$row
分配給$array
,並且在for
循環之后, $row
包含最后一行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.