A-AA+then

อยากรู้ว่ามีวิธี เก็บค่าตัวแปลภายนอก จากฟังก์ชั่นได้หรือเปล่าครั

988
โดยปกติ หากสร้าง function จะได้ค่ากลับมาก็ต่อเมื่อ return ครับแต่ผมอยากให้ เก็บค่าตัวแปลในฟังก์ชั่น เลยทำได้หรือเปล่าครับ
เช่น

<?php
function aa($dd) {
      $val = $dd
}

aa('data1');
aa('data2');
aa('data3');
aa('data4');

print $val;
?>

ต้องการให้แสดง

data1data2data3data4

คือผมไม่ต้องกาให้ return ครับ หาก return ต้องเอาค่ามาเก็บเช่น

$val .= aa('data1');
$val .= aa('data2');
$val .= aa('data3');
$val .= aa('data4');

ไม่ทราบอธิบายคำถามงงหรือเปล่าครับ

2 ความคิดเห็น

จะงงดีมั้ยเนี่ย....

ปกติแล้วทำไม่ได้ครับ เพราะตามกฏแล้ว ขอบเขตของตัวแปรจะอยู่ภายในฟังก์ชั่นเท่านั้น ทีนี้ผมไม่รู้ว่าจุดประสงคฺ์ เพื่ออะไร แต่ดูจากผลลัพท์ที่ต้องการแค่แสดงค่า ก็มีความเป็นไปได้ดังนี้

วิธีที่ 1
<?php
function aa($dd) {
 // จะเก็บไว้ใน $val ก่อนทำไมในเมือ่ต้องการแสดงค่า หรือถ้าจะต้องทำอย่างอื่นก่อน ก็ทำแล้วแสดงผลเลย ไม่ต้อง return
  echo $dd;
}
?>


วิธีที่ 2
<?php
function aa($dd) {
  return $dd;
}
// ตามเงื่อนไขที่ว่าไม่ต้องการเก็บผลลัพท์ในตัวแปรก่อน
echo aa($dd);
?>


วิธีที่ 3
<?php
$val = '';
function aa($dd) {
 // ใช้ตัวแปรแบบ global
  global $val;
  $val .= $dd;
}

aa('data1');
aa('data2');
aa('data3');
aa('data4');

echo $val;
?>

1

ขอบคุณอาจารย์ มากครับ

จากที่ดูผมต้องการแบบวิธีที่ 3 มากครับ

สำหรับเหตุผลที่นำวิธีนี้ไปใช้

ผมกำลังหัดเขียนเป็น template ครับ

โดยจะเก็บ html เป็น text ต่อๆ กันก่อนจะส่ง เข้า หน้า view ครับ

เช่น

add_css('http://localhost/css/css1.css');
add_css('http://localhost/css/css2.css');
add_css('http://localhost/css/css3.css');

function add_css($url) {
      $css .= '<link href="'.$url.'" rel="stylesheet" type="text/css" />';
}

ประมาณนี้ครับผม
อันนี้คือเหตุผลที่ผมต้องการครับผม

อย่างไรก็ดีขอบคุณอาจารย์มากครับ
2
^