วิธีการเพิ่มองค์ประกอบในอาร์เรย์ที่ว่างเปล่าใน PHP?


488

ถ้าฉันกำหนดอาร์เรย์ใน PHP เช่น (ฉันไม่ได้กำหนดขนาดของมัน):

$cart = array();

ฉันเพียงแค่เพิ่มองค์ประกอบให้กับสิ่งต่อไปนี้หรือไม่?

$cart[] = 13;
$cart[] = "foo";
$cart[] = obj;

ตัวอย่างอาร์เรย์ใน PHP ไม่มีวิธีการที่เพิ่มเข้ามาcart.add(13)ใช่ไหม

คำตอบ:


802

ทั้งarray_pushวิธีการที่คุณอธิบายจะใช้ได้

$cart = array();
$cart[] = 13;
$cart[] = 14;
// etc

//Above is correct. but below one is for further understanding
$cart = array();
for($i=0;$i<=5;$i++){
    $cart[] = $i;  
}
echo "<pre>";
print_r($cart);
echo "</pre>";

เหมือนกับ:

<?php
$cart = array();
array_push($cart, 13);
array_push($cart, 14);

// Or 
$cart = array();
array_push($cart, 13, 14);
?>

178
ตามที่ระบุไว้ในเอกสารประกอบ PHP หากคุณเพียงแค่ผลักองค์ประกอบเดียวทุกครั้ง (เช่นในวงวน) หรือองค์ประกอบเดียวหนึ่งครั้งจะเป็นการดีที่สุดที่จะใช้$cart[] = 13วิธีการนี้ไม่เพียงเพราะตัวละครน้อยลงในการดำเนินการเดียวกัน ยังไม่ได้กำหนดค่าใช้จ่ายประสิทธิภาพของการเรียกใช้ฟังก์ชันซึ่ง array_push () จะ แก้ไข: แต่คำตอบที่ดี อย่างมีประสิทธิภาพเดียวกันและการใช้งานส่วนใหญ่จะไม่ได้สังเกตเห็นความแตกต่างของประสิทธิภาพ แต่ช่วยให้ทราบถึงความแตกต่างเหล่านั้น
Mattygabe

67
มันเป็นเพียงฉันหรือไม่$cart[]=...ไวยากรณ์ที่รวดเร็วก่อนดูเหมือนการกำหนดตัวแปรและไม่ array_push นัย?
แบรดไฮน์

6
มันทำกับฉันอย่างแน่นอน ฉันจะไม่รังเกียจคำอธิบายว่าทำไมมันถึงไม่ได้รับมอบหมาย
limeandcoconut

4
$ cart [] = 13; เร็วกว่า. มีอักขระน้อยลงและดูดีขึ้น
Gal Bracha

19
ฉันจะเสนอมุมมองทางเลือกของฉันที่ทำให้นักเขียนภาษาอื่นสับสนในการอ่านไวยากรณ์ของรถเข็น [] = ... ฉันมีประสบการณ์กับภาษาจำนวนมากและฉันไม่เคยเดาว่ามันจะเป็นเช่นไร
Erti-Chris Eelmaa

75

เป็นการดีกว่าที่จะไม่ใช้array_pushและใช้สิ่งที่คุณแนะนำ ฟังก์ชั่นเพียงเพิ่มค่าใช้จ่าย

//We don't need to define the array, but in many cases it's the best solution.
$cart = array();

//Automatic new integer key higher than the highest 
//existing integer key in the array, starts at 0.
$cart[] = 13;
$cart[] = 'text';

//Numeric key
$cart[4] = $object;

//Text key (assoc)
$cart['key'] = 'test';

11
"ถ้าคุณกำลังเพิ่มค่าหลายค่าในอาเรย์ในลูปการใช้ array_push เร็วกว่าทำซ้ำ [] = statement" php.net/manual/en/function.array-push.php#84959
Ollie Glass

3
ถูกต้องอย่างแน่นอนหากกรณีการใช้งานของคุณกำลังเพิ่มรายการเดียวหรือรายการหนึ่งครั้ง หากทราบค่าทั้งหมดในเวลาเดียวกันก็เป็นการดีที่สุดที่จะใช้สัญกรณ์ array_push ขึ้นอยู่กับจำนวนไอเท็มที่ต้องเพิ่มอักขระพิเศษจากการพิมพ์ชื่ออาเรย์ซ้ำในแต่ละครั้งอาจเป็นอุปสรรคประสิทธิภาพมากกว่าการเรียกใช้ฟังก์ชัน เหนือหัว และเช่นเคยควรใช้วิจารณญาณเมื่อเลือก คำตอบที่ดี!
Mattygabe

2
คำตอบนี้สมบูรณ์ที่สุด
Lokiare

10

คุณสามารถใช้array_push มันเพิ่มองค์ประกอบในตอนท้ายของอาร์เรย์เช่นในกอง

คุณสามารถทำได้เช่นนี้:

$cart = array(13, "foo", $obj);

10

จากประสบการณ์ของฉันคุณแก้ปัญหาได้ดีที่สุดเมื่อกุญแจไม่สำคัญ:

$cart = [];
$cart[] = 13;
$cart[] = "foo";
$cart[] = obj;

2

โปรดจำไว้ว่าวิธีนี้จะเขียนทับอาร์เรย์แรกดังนั้นใช้เฉพาะเมื่อคุณแน่ใจ!

$arr1 = $arr1 + $arr2;

( ดูแหล่งที่มา )


1
ทำไม downvote ใครสามารถอธิบายได้ว่าทำไมสิ่งนี้ถึงไม่ดี? มันไม่ปลอดภัยหรือ
แซนดี้

4
@SandBeach ไม่ใช่คำตอบ
mateos

2
$cart = array();
$cart[] = 11;
$cart[] = 15;

// etc

//Above is correct. but below one is for further understanding

$cart = array();
for($i = 0; $i <= 5; $i++){
          $cart[] = $i;  

//if you write $cart = [$i]; you will only take last $i value as first element in array.

}
echo "<pre>";
print_r($cart);
echo "</pre>";

$ cart [] = $ i; - ส่วนนั้นของรหัสเพิ่มองค์ประกอบไปยังอาร์เรย์ ----> $ cart = [$ i]; - นี่จะส่งคอมไพเลอร์ แต่คุณจะไม่ได้สิ่งที่คุณต้องการ
unpluggeDloop

0
$products_arr["passenger_details"]=array();
array_push($products_arr["passenger_details"],array("Name"=>"Isuru Eshan","E-Mail"=>"isuru.eshan@gmail.com"));
echo "<pre>";
echo json_encode($products_arr,JSON_PRETTY_PRINT);
echo "</pre>";

//OR

$countries = array();
$countries["DK"] = array("code"=>"DK","name"=>"Denmark","d_code"=>"+45");
$countries["DJ"] = array("code"=>"DJ","name"=>"Djibouti","d_code"=>"+253");
$countries["DM"] = array("code"=>"DM","name"=>"Dominica","d_code"=>"+1");
foreach ($countries as $country){
echo "<pre>";
echo print_r($country);
echo "</pre>";
}

-1

เมื่อต้องการเพิ่มองค์ประกอบด้วยการทำดัชนีองค์ประกอบตามศูนย์ฉันคิดว่าสิ่งนี้จะทำงานได้เช่นกัน:

// adding elements to an array with zero-based index
$matrix= array();
$matrix[count($matrix)]= 'element 1';
$matrix[count($matrix)]= 'element 2';
...
$matrix[count($matrix)]= 'element N';
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.