array ()와 []의 PHP 차이점


148

PHP 앱을 작성 중이며 오류없이 작동하는지 확인하고 싶습니다.

원래 코드 :

<?php
$data = array('name' => 'test',
              'id'   => 'theID');

echo form_input($data);
?>

다음이 오류없이 작동하거나 어떤 이유로 권장되지 않습니까?

<?= form_input(['name' => 'test', 'id' => 'theID']); ?>

차이점이 있습니까?

PHP.net에서 array()대괄호 []가 있는 짧은 배열 방법과 데이터에 대해 다시 살펴 보았지만 확실하지 않습니다.

또한 짧은 PHP 태그 <?= ?>가 에코에 적합합니까? 버전 문제가 있습니까? (php.ini에서 제공됩니다)


1
짧은 배열 구문은 PHP 5.4에서 도입되었으며 차이가 없으며 이전 방법은 제거되지 않으므로 사용하는 것이 안전합니다. 짧은 태그는 일반적으로 눈살을 찌푸리고 사용하지 않을 것입니다.
JimL

2
Tks, PHP 짧은 태그를 사용하지 않는 참조 / 이유는 무엇입니까?
Mr.Web

7
<? =?>는 실제로 짧은 태그로 간주되지 않지만 표준 짧은 태그 afaik으로 비활성화되지 않으므로 간단한 에코에 적합합니다.
Alexander Varwijk


1
<? =?> 태그에서 재미있는 내용을 읽습니다. 코멘트 중 하나에 따르면 "Rasmus Lerdorf는 스스로 커밋했다" programmers.stackexchange.com/questions/151661/…
johnsnails

답변:


223

다음 []은 PHP> = 5.4에서 지원됩니다.

['name' => 'test', 'id' => 'theID']

이것은 짧은 구문이며 PHP <5.4에서는 작동하지 않습니다 .


5.3.24 도이 구문을 지원하는 것 같습니다. (직접 확인할 수 없음)
Alberto

3
차이점이 있습니까?
Ali Akbar Azizi

26
타이핑 길이를 세지 않으면 @CooPer, 아니요.
Alpha

7
나는 참조를 원했고 이것을 발견했다 -php.net/manual/en/language.types.array.php- "PHP 5.4 부터는 array ()를 []로 대체하는 짧은 배열 구문을 사용할 수도 있습니다."
mrwaim

1
Prof83 @, 당신은 사용할 수 있습니다 $data = new stdClass();$data->someProp = 'someValue';사용하는 PHP표준 클래스 및 $obj = (object) ['foo'=>'bar', 'baz'=>'biz'];객체 (stdClass)하지만 관련에 배열 (명시 적 형 변환을 사용하여) 변환 {}, 그것은 미래에 구현하지만 반드시 상점 :-) 수
알파

19

2019 년 현재 []구문이 추가 된 지 7 년 이되었습니다. array()내 의견으로는 오래된 레거시 프로그램을 제외하고는 떨어질 정도로 길다 .


3
@TheAlpha 오늘날에도 성능 차이가 있는지 궁금합니다.
Cid

측정 했습니까? 나는 그것들이 단순히 대체 구문이라고 가정하고 측정 할 수는 없습니다.
David Spector

6

5.3 또는 이전 버전을 사용 []하는 경우 연관 배열뿐만 아니라 배열로 사용할 수 없습니다 . 5.4 이후 버전의 PHP를 사용하는 경우 array()또는 []을 사용하여 배열, 연관 배열 또는 다차원 배열을 만들 수 있습니다 .


1

그리고에 관한 <?= ?>질문의 일부를 : 그것은 크게되어 있지 적어도되지 2019 년에 눈살을 찌푸렸다.

  1. 좋은 기술 분석 : /software/151661/is-it-bad-practice-to-use-tag-in-php
  2. 의주의 사항 PSR-1 : 파일은 반드시 만을 사용 <?php하고 <?=태그입니다.
  3. TL; DR : 당신이 그것을 사용할 수 없거나 사용하지 말아야 할 이유가 없습니다.

-12

PHP 7.2를 사용하면 저보다 오히려 [나는 배열입니다] {나는 배열입니다 작동하는 것 같습니다}. {}와 사이의 차이가 []있습니다. 내 코드

<p>
  <label for="post_category"> Cat 1 </label>
  <input type="checkbox" name="post_category{first}" value="cat1">
  <br />
  <label for="post_category{second}"> Cat 2 </label>
  <input type="checkbox" name="post_category" value="cat2">
</p>

15
PHP는 어디에 있습니까? HTML을 작성 중입니다.
domdambrogia

1
또한 OP가 요청한 경우에는 중괄호가 작동하지 않습니다. 중괄호를 사용하여 배열을 만들 수 없으며 배열 요소에만 액세스하십시오 (v5.4부터 -7.3까지).
Aydin4ik
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.