ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programming[PHP] เอาตัวแปรที่อยู่ใน function foreach ออกมาใช้ข้างนอก function ยังไงครับ?
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: [PHP] เอาตัวแปรที่อยู่ใน function foreach ออกมาใช้ข้างนอก function ยังไงครับ?  (อ่าน 2793 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
charlie
ก๊วนเสียว
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 219



ดูรายละเอียด เว็บไซต์
« เมื่อ: 10 สิงหาคม 2009, 17:04:59 »

คำถามตามหัวข้อเลยครับ
เอาตัวแปรที่ได้กำหนดอยู่ใน function foreach ออกมาใช้ข้างนอก function ยังไงครับ?

ตัวอย่าง
โค๊ด:
foreach($response->Cart->CartItems->CartItem as $current){
   $asin = $current->ASIN;
}

จะเอาไอเจ้า $asin ออกมาใช้ข้างนอกหน่ะครับ ทำยังไง

ขอบคุณสำหรับทุกคำตอบครับ Smiley
บันทึกการเข้า

Kobsoft
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 255
ออฟไลน์ ออฟไลน์

กระทู้: 2,574



ดูรายละเอียด
« ตอบ #1 เมื่อ: 10 สิงหาคม 2009, 17:15:12 »

ประกาศตัวแปรเป็น Global นอกฟังก์ชั่นคับ
บันทึกการเข้า
charlie
ก๊วนเสียว
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 219



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 10 สิงหาคม 2009, 17:21:57 »

ประกาศตัวแปรเป็น Global นอกฟังก์ชั่นคับ

ยังไงอ่ะครับ Lips Sealed
บันทึกการเข้า

charlie
ก๊วนเสียว
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 219



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 10 สิงหาคม 2009, 17:28:34 »

โทษนะครับมีเพิ่ม ถ้าเกิดว่าต้องการให้ไอเจ้า $asin ซึ่งเป็นค่าที่ได้จากการวนลูป มาลงใน array อีกที ทำยังไงครับ?
บันทึกการเข้า

mr.sit
สมุนแก๊งเสียว
*

พลังน้ำใจ: 20
ออฟไลน์ ออฟไลน์

กระทู้: 617



ดูรายละเอียด
« ตอบ #4 เมื่อ: 10 สิงหาคม 2009, 17:31:55 »

เดี๋ยวนะ foreach มันไม่ได้จำกัดขอบเขตของตัวแปรนี่ครับ สามารถนำมาใช้ได้โดยไม่ต้องประกาศ global ด้วยซ้ำ !!!

สำหรับคำถามที่สอง เปลี่ยนจาก $asin -> $asin[]

foreach($response->Cart->CartItems->CartItem as $current){
   $asin[] = $current->ASIN;
}
บันทึกการเข้า
charlie
ก๊วนเสียว
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 219



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 10 สิงหาคม 2009, 17:47:07 »

เดี๋ยวนะ foreach มันไม่ได้จำกัดขอบเขตของตัวแปรนี่ครับ สามารถนำมาใช้ได้โดยไม่ต้องประกาศ global ด้วยซ้ำ !!!

สำหรับคำถามที่สอง เปลี่ยนจาก $asin -> $asin[]

foreach($response->Cart->CartItems->CartItem as $current){
   $asin[] = $current->ASIN;
}

โอ้ !! ขอบคุณมากครับ mr.sit เหมือนจะได้แล้วววว

เอ้อ... ข้าน้อยขอถามอีกอย่างนะครับ Tongue

ถ้าเกิดว่าเราต้องการให้ foreach สองตัวในเวลาเดียวกันทำยังไงครับ

foreach($response->Cart->CartItems->CartItem as $current1)
+
foreach($attribute->Items->Item as $current2)

แบบนี้อ่ะครับ แต่ให้ใช้ function foreach แค่ครั้งเดียวทำไงอ่ะ?
บันทึกการเข้า

charlie
ก๊วนเสียว
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 219



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 10 สิงหาคม 2009, 21:16:44 »

ขอดันหน่อยนะครับ

ง่า... ไม่มีใครรู้เรยหรอครับ?
บันทึกการเข้า

ball6847
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 212
ออฟไลน์ ออฟไลน์

กระทู้: 4,174



ดูรายละเอียด
« ตอบ #7 เมื่อ: 10 สิงหาคม 2009, 21:21:49 »

foreach เป็น statement คับ ไม่ใช่ function

statement ไม่มีัการจำกัดขอบเขตตัวแปร แต่ function มีการจำกัดขอบเขตตัวแปร

foreach สามารถซ้อนกันยังงัยก็ได้ ตราบใดเท่าที่ใส่ array ให้มันไป วนรอบ
บันทึกการเข้า

charlie
ก๊วนเสียว
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 219



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 10 สิงหาคม 2009, 21:27:47 »

foreach เป็น statement คับ ไม่ใช่ function

statement ไม่มีัการจำกัดขอบเขตตัวแปร แต่ function มีการจำกัดขอบเขตตัวแปร

foreach สามารถซ้อนกันยังงัยก็ได้ ตราบใดเท่าที่ใส่ array ให้มันไป วนรอบ

อ้า คุณบอลครับ พี่เคยเขียน class ลงไว้ในกระทู้ SEM บอร์ด หน่ะครับจำได้อ่ะเป่า เกี่ยวกับ การ authenticate API หน่ะครับ ที่มีเรื่อง cache ด้วย
อยากถามว่า ถ้าผมอยากให้ cache เฉพาะหน้า ทำได้มั้ยครับ เพราะไม่อยากให้มัน cache หน้า cartContents หน่ะครับ เพราะไม่งั้นลูกค้าพอ add สินค้าแล้ว CartContents มันไม่อัพเดทตาม


อ้อ.. แล้วก็ผมไม่ได้อยากใช้ foreach ซ้อนครับ แต่อยากให้มันใช้เพียงครั้งเดียวเพราะต้องการใช้ค่า 2 ตัว แบบนี้

โค๊ด:
foreach($response->Cart->CartItems->CartItem as $current1 && $attribute->Cart->CartItems->CartItem as $current2 )

คือผมลองแบบนี้แล้วไม่ได้แฮะ Lips Sealed
พี่พอรู้วิธีป่าวครับ
« แก้ไขครั้งสุดท้าย: 10 สิงหาคม 2009, 21:30:50 โดย charlie » บันทึกการเข้า

EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,516



ดูรายละเอียด
« ตอบ #9 เมื่อ: 10 สิงหาคม 2009, 22:22:22 »

ถ้าทั้ง
$response->Cart->CartItems->CartItem
$attribute->Cart->CartItems->CartItem

มีค่าเท่ากันเด๊ะ ก็อิงค่าหนึ่งไปเลย

โค๊ด:
foreach($response->Cart->CartItems->CartItem as $k => $v) {
    $current1 = $v;
    $current2 = $attribute->Cart->CartItems->CartItem[$k];
}
บันทึกการเข้า

Hari Seldon
ก๊วนเสียว
*

พลังน้ำใจ: 16
ออฟไลน์ ออฟไลน์

กระทู้: 258



ดูรายละเอียด
« ตอบ #10 เมื่อ: 11 สิงหาคม 2009, 11:33:59 »


อ้อ.. แล้วก็ผมไม่ได้อยากใช้ foreach ซ้อนครับ แต่อยากให้มันใช้เพียงครั้งเดียวเพราะต้องการใช้ค่า 2 ตัว แบบนี้

ถ้า index ของ $response กับ $attribute เหมือนกัน
ก็ตามที่พี่ EThaiZone ว่าเลยครับ
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์