ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: UnzO ที่ 12 เมษายน 2011, 16:29:26



หัวข้อ: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลายมิติ
เริ่มหัวข้อโดย: UnzO ที่ 12 เมษายน 2011, 16:29:26
อ๊ากกก... ตอนเรียน Data Structure ไม่ตั้งใจ เจออาร์เรย์ซ้อนเข้าไปเยอะๆ เรียกใช้ไม่ถูกเลย
โค๊ด:
[Items] => Array
        (
            [Request] => Array
                (
                    [IsValid] => True
                    [ItemSearchRequest] => Array
                        (
                            [Condition] => New
                            [DeliveryMethod] => Ship
                            [ItemPage] => 1
                            [Keywords] => Keywords
                            [MerchantId] => Amazon
                            [ResponseGroup] => Array
                                (
                                    [0] => ItemAttributes
                                    [1] => EditorialReview
                                    [2] => OfferFull
                                    [3] => Reviews
                                )
 
                            [ReviewSort] => -SubmissionDate
                            [SearchIndex] => All
                        )
 
                )
        )

ลองใช้ Recursive Function (ฟังก์ชั่นเรียกตัวเอง) แล้วยังไม่โดนครับ

ปล.ตอนนี้เบลอมาก คิดไม่ออกเลยครับ


หัวข้อ: Re: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลายมิติ
เริ่มหัวข้อโดย: ratz ที่ 12 เมษายน 2011, 16:58:58
ใช้ foreach เลยคับ



หัวข้อ: Re: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลายมิติ
เริ่มหัวข้อโดย: mSkyline ที่ 12 เมษายน 2011, 17:00:44
$items->request->ItemSearchRequest->ResponseGroup[0];

แบบนี้ได้หรือเปล่าครับ


หัวข้อ: Re: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลายมิติ
เริ่มหัวข้อโดย: UnzO ที่ 12 เมษายน 2011, 17:44:37
คือตอนนี้กำลังงงตัวเองว่าจะทำอะไร...  :P

คือผมเอา XML มาทำเป้น Array แล้วงงว่าจะทำอะไรต่อ

แนวคิดประมาณอยากได้ชุดข้อมูลของ XML จาก Amazon มาใส่ใน Array เพื่อความง่ายในการเรียกใช้งานหน่ะครับ เดี๋ยวคงต้องออกไปสูดอากาศข้างนอกก่อนดีกว่า


หัวข้อ: Re: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลายมิติ
เริ่มหัวข้อโดย: LoveMiracle ที่ 12 เมษายน 2011, 18:04:33
ก็เรียกแบบ array ดิครับ
$items['request']['ItemSearchRequest']['ResponseGroup'][0]


หัวข้อ: Re: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลายมิติ
เริ่มหัวข้อโดย: mSkyline ที่ 12 เมษายน 2011, 18:59:33
amezon ไม่มี JSON ให้เหรอครับ

ebay yahoo ยังมีให้เลย


หัวข้อ: Re: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลายมิติ
เริ่มหัวข้อโดย: Synchronize ที่ 12 เมษายน 2011, 19:01:16
ผมงงโจทย์

  :P


หัวข้อ: Re: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลายมิติ
เริ่มหัวข้อโดย: npbook ที่ 13 เมษายน 2011, 01:41:57
ถ้าพูดถึงความง่ายในการดึงข้อมูลที่ซับซ้อนแล้ว function xpath ของ xml มันน่าจะง่ายกว่า array นะครับ


หัวข้อ: Re: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลายมิติ
เริ่มหัวข้อโดย: kobkung ที่ 13 เมษายน 2011, 11:10:13
ใช้ simple xml ทำสิ ง่ายๆ for each ก็ได้แล้ว ได้ tag เลย


หัวข้อ: Re: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลายมิติ
เริ่มหัวข้อโดย: ohmohm ที่ 13 เมษายน 2011, 18:04:12
ต้องการ
String XML แปลงเป็น Object XML
จากนั้นดึง Object XML บางส่วน มาเข้า Array หรือเปล่าครับ


หัวข้อ: Re: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลายมิติ
เริ่มหัวข้อโดย: UnzO ที่ 14 เมษายน 2011, 13:25:24
ก็เรียกแบบ array ดิครับ
$items['request']['ItemSearchRequest']['ResponseGroup'][0]

ขอบคุณมากครับ ผมว่าน่าจะใช้แบบนี้น่าจะง่ายสำหรับผมสินะ

ที่อยากทราบคือ เวลาทำเว็บ Amazon กันแต่ละคนนิยมดึงข้อมูลกันแบบไหน เพราะปกติแล้วผมเรียกกันตรงๆ เลย เช่น $item->ItemAttributes->Title อะไรประมาณนี้ เลยมีแนวคิดว่าอยากเอาพวกข้อมูลต่างๆ พวกนี้มาจัดเรียงใหม่ เพื่อเวลาเรียกใช้จะได้สะดวก มีแผนจะปล่อยออกมาเป็น Script ด้วย เลยอยากให้ง่ายสำหรับคนที่ไม่เก่งโปรแกรมหน่ะครับ
ที่ผมวางโครงไว้ก็จะมีแนวทางที่ง่ายที่สุด(เท่าที่ผมจะคิดได้)แยกระบบ Core หลักๆ ของสคริปออกจากตัวแสดงผล คือแยก Core กับ Theme ออก แต่ในส่วน Theme นั้นก็จะมีตัวโค๊ดอยู่ด้วยบางส่วน(เฉพาะส่วนที่ต้องแสดงผล) แต่ก็ไม่อยากให้เขียนภาษาใหม่(ไม่ใช้ Templete Engine) ก็เลยใช้ PHP นี่แหละง่ายดี ทำแบบลูกทุ่งๆตามประสา  :P

ปล.ขอโทษนะครับที่ทำให้งง เพราะผมเองก็ยังงงตัวเองเหมือนกัน...


หัวข้อ: Re: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลายมิติ
เริ่มหัวข้อโดย: ohmohm ที่ 17 เมษายน 2011, 13:48:50
เพราะเรียก Array แล้วเร็วกว่าเรียก object ที่เป็น XML หรือเปล่า


หัวข้อ: Re: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลายมิติ
เริ่มหัวข้อโดย: UnzO ที่ 18 เมษายน 2011, 21:23:56
ที่ผมต้องการคือนำข้อมูลที่ได้มาจัดใหม่ครับ ให้มีมิติที่น้อยลง เพราะฉนั้นความเร็วน่าจะมากกว่าเรียกหลายๆ มิติ


หัวข้อ: Re: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลา
เริ่มหัวข้อโดย: Tee++; ที่ 19 เมษายน 2011, 12:18:39
เป็นผมนะ ผมจะใช้ xpath ตั้งแต่ตอนที่มันเป็น XML

หรือ ถ้าอยากใช้เป็น array จริงๆ ผมก็จะใช้ library ที่จำลอง xpath ใน array อาทิเช่น set (CakePHP)
http://book.cakephp.org/view/1501/extract
*แนะนำเลยตัวนี้ เป็น library ที่ทำงานกับ array ได้ขั้นเทพ แงะออกมาจาก Cake เลยก็ได้

หรือถ้าเป็น Json มันก็มีคนเขียน library ที่ทำงานกับ Json แบบ xpath มาอีก
http://goessner.net/articles/JsonPath/

** ข้อเสีย lib พวกนี้ทำงานช้านิดหน่อย ไม่เหมือน xpath ของ XML

ไอ้แบบ array ข้างบน น่าจะเรียกได้ราวๆ นี้ถ้าจะเอา groups



$groups = Set::extract('//ResponseGroup', $response);


นอกจากนี้ ตัว Set ยังใช้ merge, append, remove, find, sort, multisort, distinct อะไรได้อีกสารพัด


หัวข้อ: Re: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลายมิติ
เริ่มหัวข้อโดย: FCUK ที่ 19 เมษายน 2011, 12:24:25
แนะนำลองศึกษา JSON + JQuery อย่างละเอียดดูครับ


หัวข้อ: Re: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลายมิติ
เริ่มหัวข้อโดย: Tee++; ที่ 19 เมษายน 2011, 12:26:23
^
^
jQuery ไม่น่าจะมาเกี่ยวอะไรนะครับ


หัวข้อ: Re: ขอไอเดียการเรียกข้อมูลจาก Array ซ้อนกันหลายมิติ
เริ่มหัวข้อโดย: nypee ที่ 19 เมษายน 2011, 13:00:09
Confirm XPath อีกคน เพราะเค้าเตรียม feature มาให้แล้ว ทั้งการ query, filter, condition
ถ้าอยากได้เป็น Array ก็ใช้ XPath ดึงมาวน for ลง array อีกทีคับ

การแปลง xml ทั้งก้อนเป็น array นอกจากทำยากแล้ว
ผลที่ได้ก็ซับซ้อน (ถ้าจะให้ครบโครงสร้าง) เวลาเอาไปใช้ก็เปลือง resource คับ