PHP에서 빈 배열에 요소를 추가하는 방법은 무엇입니까?


488

PHP에서 배열을 정의하면 (크기를 정의하지 않음) :

$cart = array();

다음을 사용하여 단순히 요소를 추가합니까?

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

PHP의 배열에는 add 메소드가 없습니다 (예 : 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?
Brad Hein

6
그것은 확실히 나에게 않습니다. 과제 가 아닌 이유에 대해서는 설명 하지 않습니다 .
limeandcoconut

4
$ cart [] = 13; 가 더 빠르다. 문자가 적고 좋아 보입니다.
Gal Bracha

19
다른 언어 프로그래머가 cart [] = ...의 구문을 읽는 것이 매우 혼란 스럽다는 대체 견해를 제공 할 것입니다. 많은 언어에 대한 경험이 있으며 그것이 무엇인지 추측 할 수 없습니다.
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를 사용하는 것이 더 빠릅니다." 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
왜 공감자가 왜 나쁜지 설명 할 수 있습니까? 안전하지 않습니까?
Sandy

4
@SandyBeach 그것은 대답이 아닙니다
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

0부터 시작하는 요소 인덱싱으로 요소를 추가하려면이 기능도 작동한다고 생각합니다.

// 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.