source

php에 사전이 있나요?

factcode 2023. 1. 15. 17:14
반응형

php에 사전이 있나요?

예를 들어 다음과 같습니다.

$names = {[bob:27, billy:43, sam:76]};

다음과 같이 참조할 수 있습니다.

 $names[bob]

http://php.net/manual/en/language.types.array.php

<?php
$array = array(
    "foo" => "bar",
    "bar" => "foo",
);

// as of PHP 5.4
$array = [
    "foo" => "bar",
    "bar" => "foo",
];
?>

표준 어레이는 이 방법으로 사용할 수 있습니다.

php에는 사전이 없지만 PHP 배열은 인덱스와 키를 모두 가지고 있기 때문에 다른 언어의 사전과 비슷하게 동작할 수 있습니다(키만 있고 인덱스는 없습니다).

그게 무슨 뜻이죠?

$array = array(
    "foo" => "bar",
    "bar" => "foo"
);

// as of PHP 5.4
$array = [
    "foo" => "bar",
    "bar" => "foo",
];

위의 PHP 배열에는 다음 행을 사용할 수 있지만 Python과 같은 언어(배열과 사전을 모두 포함)의 사전을 사용하여 동등한 작업을 수행할 수 있는 방법은 없습니다.

print $array[0]

PHP 어레이는 어레이에 값을 제공하여 값을 인쇄할 수도 있습니다.

print $array["foo"]

보통의array는 사전 데이터 구조로서 기능할 수 있습니다.일반적으로 어레이, 리스트(벡터), 해시 테이블, 사전, 컬렉션, 스택, 큐 등의 다목적 용도가 있습니다.

$names = [
    'bob' => 27,
    'billy' => 43,
    'sam' => 76,
];

$names['bob'];

또한 폭넓은 설계로 인해 특정 데이터 구조의 이점을 충분히 얻을 수 없습니다.를 확장하여 사용자 자신의 사전을 구현하거나 객체를 키로 할당할 수 있는 맵(사전) 구현인 클래스를 사용할 수 있습니다.

어레이 사용:

<?php

$arr = [
    "key" => "value",
    "key2" => "value2"
];

임의의 개체를 키로 사용하려는 경우 "불법 오프셋 유형"이 발생할 수 있습니다.이 문제를 해결하려면 , 다음의 호출로 키를 랩 합니다.spl_object_hash임의의 개체를 가져와서 고유한 해시를 반환합니다.

단, 한 가지 유의할 점은 키 자체가 해시가 되기 때문에 해시를 생성하기 위해 사용되는 오브젝트 목록을 사전에서 가져올 수 없다는 것입니다.이것은, 특정의 실장에서는 필요한 경우와 그렇지 않은 경우가 있습니다.

간단한 예:

<?php

class Foo
{
}

$dic = [];

$a = new Foo();
$b = new Foo();
$c = $a;

$dic[spl_object_hash($a)] = 'a';
$dic[spl_object_hash($b)] = 'b';
$dic[spl_object_hash($c)] = 'c';

foreach($dic as $key => $val)
{
    echo "{$key} -> {$val}\n";
}

출력은 다음과 같습니다.

0000000024e27223000000005bf76e8a -> c
0000000024e27220000000005bf76e8a -> b

실행 시 해시 및 해시는 다를 수 있습니다.

언급URL : https://stackoverflow.com/questions/6490482/are-there-dictionaries-in-php

반응형