Tôi mới trong lập trình và chỉ mới bắt đầu php như hai tháng trước. Cho đến nay tôi dường như hiểu nó nhiều hơn và nhiều hơn nữa. Nhưng bây giờ tôi đang bối rối. Tôi có một vòng lặp foreach mà sẽ không lặp qua mảng tôi đang ăn nó. Tôi đã kiểm tra cú pháp và logic lặp đi lặp lại và không thể tìm thấy vấn đề. Tôi có thể làm điều gì đó ngu ngốc, nhưng tôi cần sự giúp đỡ của bạn để tìm ra nó là gì.PHP foreach không looping
Mã này là một phần của tập lệnh để cho phép người dùng đã đăng nhập thay đổi thông tin cá nhân của anh ấy. Tôi đặt dữ liệu từ $_POST
trong một mảng và thức ăn nó (với session_user_id
) để chức năng của tôi wijzig_gegevens()
:
if (empty($_POST) === false && empty($errors) === true) {
$gegevens = array(
'voornaam' => $_POST['voornaam'],
'achternaam' => $_POST['achternaam'],
'emailadres' => $_POST['emailadres']
);
wijzig_gegevens($session_gebruiker_id, $gegevens);
}
Tôi đã kiểm tra nếu $gegevens
thực sự là một mảng và nó là; khi tôi tôi print_r($gegevens)
nhận được đầu ra sau (đây là một mảng kết hợp, phải không?):
Array ([voornaam] => Marieke [achternaam] => Schut [emailadres] => [email protected])
Vì vậy, các thông tin sẽ được gửi đến chức năng của tôi wijzig_gegevens()
. Khi tôi thực hiện wijzig_gegevens()
trả lại $gegevens
và mã chính của tôi print_r(wijzig_gegevens())
, nó sẽ hiển thị chính xác cùng một mảng như trên. Vì vậy, $gegevens
đến trong wijzig_gegevens()
và vẫn là một mảng.
Vì vậy, sau đó, wijzig_gegevens()
nên thực hiện phần của nó. Cuối cùng nó sẽ cập nhật cơ sở dữ liệu, nhưng hiện tại tôi chỉ cố gắng để có được nó để tạo ra các cặp khóa/giá trị từ mảng đó. Đây là chức năng:
function wijzig_gegevens($gebruiker_id, $gegevens) {
global $db;
$gebruiker_id = (int)$gebruiker_id;
foreach($gegevens as $key => $value) {
return $key.$value;
}
}
Tôi mong đợi foreach
để hiển thị 3 bộ cặp khóa/giá trị. Nhưng đối với một số lý do nó chỉ hiển thị các cặp khóa/giá trị đầu tiên:
voornaamMarieke
này đã được đánh đố tôi trong hơn một ngày nay, vì vậy tôi hy vọng ai đó có thể giúp tôi tìm sai lầm của tôi.
Bạn' đã có 'return' trong vòng lặp. Khi nó chạm vào 'return', đúng vậy. Cuộc gọi hàm kết thúc. Thay vì 'return', bạn có thể sử dụng' echo'. Nhưng bạn không nên thực sự 'echo' từ một hàm (phụ thuộc). Vì vậy, bạn có thể nối vào một biến và trả về là * sau * vòng lặp 'foreach'. –
Bạn thực sự nên viết mã bằng tiếng Anh lol: D – DanFromGermany
Công việc tuyệt vời về nêu rõ vấn đề và quan sát của bạn rất rõ ràng. – mwittrock