การใช้ลิงก์ใน foreach ใน PHP

เมื่อทำงานกับลูป foreach การเปลี่ยนแปลงตัวแปรสำหรับองค์ประกอบ จะไม่นำไปสู่การเปลี่ยนแปลงในอาร์เรย์เอง:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  foreach ($arr as $elem) {
    $elem++;
  }
  
  var_dump($arr); // จะไม่เปลี่ยนแปลง
?>

อย่างไรก็ตาม สามารถบรรลุผลลัพธ์ที่ต้องการได้ หากประกาศตัวแปรสำหรับองค์ประกอบ เป็นลิงก์ ในกรณีนี้ การเปลี่ยนแปลง ของตัวแปรนี้จะนำไปสู่ การเปลี่ยนแปลงในอาร์เรย์:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  foreach ($arr as &$elem) {
    $elem++;
  }
  
  var_dump($arr); // จะเปลี่ยนแปลง
?>
Задание 1

แก้ไขโค้ดต่อไปนี้ ให้ทำงานได้ตาม ที่ตั้งใจไว้:

php<?php
  $arr = [1, 2, 3, 4, 5];

  foreach ($arr as &$elem) {
    $elem = sqrt($elem);
  }
  
  var_dump($arr); 
?>
Задание 2

แก้ไขโค้ดต่อไปนี้ ให้ทำงานได้ตาม ที่ตั้งใจไว้:

php<?php
  $arr = [1, 2, 3, 4, 5];

  foreach ($arr as &$elem) {
    $elem ** 2;
  }
  
  var_dump($arr); 
?>