Tôi đang cố chỉnh sửa một mảng khi đang di chuyển, bên trong vòng lặp foreach
. Về cơ bản, tôi phân tích mỗi khóa và nếu khóa này khớp với khóa tôi muốn, tôi muốn thêm mục nhập khác trong mảng ngay sau số này.Thêm giá trị vào một mảng bên trong vòng lặp foreach
Nếu tôi đưa mã này,
$values = array(
'foo' => 10,
'bar' => 20,
'baz' => 30
);
foreach($values as $key => $value){
print $value . ' ';
if($key == 'bar'){
$values['qux'] = 21;
}
}
Tôi đã có 2 vấn đề,
- đầu tiên, đầu ra là
10 20 30
thay vì dự kiến 10 20 30 21
- thứ hai, ngay cả khi tôi giải quyết vấn đề đầu tiên, giá trị của tôi sẽ vẫn được thêm vào cuối của mảng của tôi
Làm cách nào để thêm mục nhập qux
giữa các số bar
và baz
?
Cảm ơn ý tưởng của bạn.
Có thể vì bạn không tạo mảng mới, nhưng sử dụng mảng cũ để lưu trữ giá trị. Đó là lý do tại sao nó ở cuối mảng của bạn. Để làm những gì bạn muốn làm là tạo một biến mới, giả sử '$ aData' và chèn các giá trị vào đó với vòng lặp' foreach' của bạn. – Refilon
Bạn không cần một mảng thứ hai để đạt được điều này. Thay vì 'foreach' sử dụng vòng lặp' for' và lặp qua chiều dài của mảng và sử dụng biến chỉ mục của vòng lặp for, hãy thêm bất cứ thứ gì bạn muốn vào mảng của mình. – VSG24