“ =>” หมายความว่าอย่างไรใน PHP?


99

ตัว=>ดำเนินการหมายถึงอะไรในรหัสต่อไปนี้?

foreach ($user_list as $user => $pass)

โค้ดเป็นความคิดเห็นที่ PHP.net ผู้ใช้ไม่ได้ระบุค่าของ$user_list, หรือ$user $passปกติฉันเห็นว่ามีความ=>หมายเท่ากับหรือมากกว่า

อย่างไรก็ตามฉันไม่แน่ใจเกี่ยวกับจุดประสงค์ที่นี่เพราะไม่ได้รับมอบหมาย ฉันอ่านรหัสเป็น

  1. ประมวลผลรายชื่อผู้ใช้ในจำนวนเต็ม
  2. เช่นว่าค่าของผู้ใช้แต่ละคนเท่ากับหรือมากกว่ารหัสผ่าน

ข้างต้นไม่สมเหตุสมผลกับฉัน


ฉันอัปเดตคำตอบของฉันลืมคีย์เวิร์ด "array"
Tyler Carter

ที่เกี่ยวข้อง: stackoverflow.com/questions/4758791/…
Marc Gravell

@Masi ผิดพลาดอยู่ข้างฉัน. ขออภัย.
kapa

ฉันจะบอกว่า => กำหนดค่าให้กับอาร์เรย์และใช้คีย์เป็นดัชนี ดังนั้นในกรณีของคุณอาร์เรย์ที่คุณเรียกว่า $ user_list ใช้ $ user เป็นคีย์ดัชนี foreach loop วนซ้ำและกำหนดให้ทุกองค์ประกอบในอาร์เรย์นั้นค่า $ pass
Julian

คำตอบ:


126

=>เป็นตัวคั่นสำหรับอาร์เรย์ที่เชื่อมโยง ในบริบทของห่วง foreach ว่ามันกำหนดที่สำคัญของอาร์เรย์ไปและความคุ้มค่าในการ$user$pass

ตัวอย่าง:

$user_list = array(
    'dave' => 'apassword',
    'steve' => 'secr3t'
);

foreach ($user_list as $user => $pass) {
    echo "{$user}'s pass is: {$pass}\n";
}
// Prints: 
// "dave's pass is: apassword"
// "steve's pass is: secr3t"

โปรดทราบว่าสามารถใช้สำหรับอาร์เรย์ที่จัดทำดัชนีเป็นตัวเลขได้เช่นกัน

ตัวอย่าง:

$foo = array('car', 'truck', 'van', 'bike', 'rickshaw');
foreach ($foo as $i => $type) {
    echo "{$i}: {$type}\n";
}
// prints:
// 0: car
// 1: truck
// 2: van
// 3: bike
// 4: rickshaw

22

หมายถึงกำหนดคีย์ให้กับ $ user และตัวแปรเป็น $ pass

เมื่อคุณกำหนดอาร์เรย์คุณจะทำเช่นนี้

$array = array("key" => "value");

ใช้สัญลักษณ์เดียวกันสำหรับการประมวลผลอาร์เรย์ในคำสั่ง foreach '=>' เชื่อมโยงคีย์และค่า

ตามคู่มือ PHP '=>' สร้างคู่คีย์ / ค่า

นอกจากนี้เท่ากับหรือมากกว่าเป็นวิธีที่ตรงกันข้าม: '> =' ใน PHP เครื่องหมายมากกว่าหรือน้อยกว่าจะขึ้นก่อนเสมอ: '> =', '<='

และเช่นเดียวกับหมายเหตุด้านข้างการยกเว้นค่าที่สองไม่ได้ผลอย่างที่คุณคิด แทนที่จะให้กุญแจคุณเท่านั้นจริงๆแล้วมันให้คุณค่ากับคุณเท่านั้น:

$array = array("test" => "foo");

foreach($array as $key => $value)
{
    echo $key . " : " . $value; // Echoes "test : foo"
}

foreach($array as $value)
{
    echo $value; // Echoes "foo"
}

1
Parse error: syntax error, unexpected T_DOUBLE_ARROW in /var/www/cha.php on line 2ตัวอย่างสุดท้ายของคุณมีบางอย่างผิดปกติตั้งแต่ฉันได้รับข้อความแสดงข้อผิดพลาด
LéoLéopold Hertz 준영

อ๊ะลืมเพิ่มคีย์เวิร์ดอาร์เรย์ ลองดูสิ
Tyler Carter

12

รหัสเช่น "a => b" หมายถึงสำหรับอาร์เรย์ที่เชื่อมโยงกัน(บางภาษาเช่นPerlถ้าจำไม่ผิดเรียก "แฮช" เหล่านั้น)ว่า "a" คือคีย์และ "b" ค่า

คุณอาจต้องการดูเอกสารของอย่างน้อย:

ที่นี่คุณมีอาร์เรย์ที่เรียกว่า$user_listและคุณจะวนซ้ำมันรับสำหรับแต่ละบรรทัดคีย์ของบรรทัดใน$userและค่าที่เกี่ยวข้องใน$pass .

ตัวอย่างเช่นรหัสนี้:

$user_list = array(
    'user1' => 'password1',
    'user2' => 'password2',
);

foreach ($user_list as $user => $pass)
{
    var_dump("user = $user and password = $pass");
}

คุณจะได้รับผลลัพธ์นี้:

string 'user = user1 and password = password1' (length=37)
string 'user = user2 and password = password2' (length=37)

(ฉันใช้var_dumpเพื่อสร้างผลลัพธ์ที่ดีซึ่งอำนวยความสะดวกในการดีบักเพื่อให้ได้ผลลัพธ์ปกติคุณจะใช้echo)


"เท่ากันหรือมากกว่า" เป็นอีกวิธีหนึ่งที่อยู่รอบ ๆ : "มากกว่าหรือเท่ากับ" ซึ่งเขียนใน PHP เช่นนี้ "> ="
สิ่งเดียวกันสำหรับภาษาส่วนใหญ่ที่มาจาก C: C ++, JAVA, PHP, ...


ตามคำแนะนำ: หากคุณเพิ่งเริ่มต้นด้วย PHP คุณควรใช้เวลาสักพัก(อาจจะสองสามชั่วโมงหรืออาจถึงครึ่งวันหรือทั้งวัน) ในการอ่านบางส่วนของคู่มือ :-)
It ' d ช่วยคุณได้มาก!


6

อาร์เรย์ใน PHP เป็นแผนที่ของคีย์ไปยังค่า:

$array = array();
$array["yellow"] = 3;
$array["green"] = 4;

หากคุณต้องการทำบางสิ่งกับคู่คีย์ - ค่า - คู่ในอาร์เรย์ของคุณคุณสามารถใช้foreachโครงสร้างควบคุม:

foreach ($array as $key => $value)

ตัวแปร $ array คืออาร์เรย์ที่คุณจะใช้ ตัวแปร $ key และ $ value จะมีคู่คีย์ - ค่า - ในทุก ๆ การวนซ้ำของforeachวง ในตัวอย่างนี้อันดับแรกจะประกอบด้วย "สีเหลือง" และ 3 ตามด้วย "สีเขียว" และ 4

คุณสามารถใช้สัญกรณ์อื่นได้หากคุณไม่สนใจคีย์:

foreach ($array as $value)

"foreach" เป็นตัวดำเนินการจริงหรือ? คุณมีแหล่งที่มาหรือไม่?
Peter Mortensen

ในทางเทคนิคมันเป็นโครงสร้างการควบคุม: php.net/manual/en/control-structures.foreach.php ฉันได้อัปเดตคำตอบตามนั้น
Scharrels

4

อาร์เรย์ใน PHP เป็นอาร์เรย์ที่เชื่อมโยงกัน (หรือที่เรียกว่าพจนานุกรมหรือแฮช) โดยค่าเริ่มต้น หากคุณไม่กำหนดคีย์ให้กับค่าอย่างชัดเจนล่ามจะดำเนินการให้คุณโดยไม่โต้ตอบ ดังนั้นนิพจน์ที่คุณได้พบจะวนซ้ำ$user_listทำให้คีย์พร้อมใช้งานเป็น$userและค่าที่พร้อมใช้งานเป็น$passตัวแปรโลคัลในเนื้อหาของforeach.


3

$user_list คืออาร์เรย์ของข้อมูลที่เมื่อวนซ้ำสามารถแบ่งออกเป็นชื่อและค่าได้

ในกรณีนี้มันเป็นชื่อและความคุ้มค่าของมันคือ$user$pass

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.