อยากรู้ว่ามีวิธี เก็บค่าตัวแปลภายนอก จากฟังก์ชั่นได้หรือเปล่าครั
โดยปกติ หากสร้าง 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');
ไม่ทราบอธิบายคำถามงงหรือเปล่าครับ
เช่น
<?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');
ไม่ทราบอธิบายคำถามงงหรือเปล่าครับ
ปกติแล้วทำไม่ได้ครับ เพราะตามกฏแล้ว ขอบเขตของตัวแปรจะอยู่ภายในฟังก์ชั่นเท่านั้น ทีนี้ผมไม่รู้ว่าจุดประสงคฺ์ เพื่ออะไร แต่ดูจากผลลัพท์ที่ต้องการแค่แสดงค่า ก็มีความเป็นไปได้ดังนี้
วิธีที่ 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;
?>
จากที่ดูผมต้องการแบบวิธีที่ 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" />';
}
ประมาณนี้ครับผม
อันนี้คือเหตุผลที่ผมต้องการครับผม
อย่างไรก็ดีขอบคุณอาจารย์มากครับ