2010-06-27 8 views
3

키가 숫자 및 문자열 인 배열을 만드는 방법.배열 키 (문자열 및 숫자)

<?php 
$array = array 
(
    'test' => 'thing', 
    'blah' => 'things' 
); 

echo $array[0]; // thing 
echo $array[1]; // things 

echo $array['test']; // thing 
echo $array['blah']; // things 
?> 
+0

질문이 명확하지 않다, 정확히 무엇을 원하는가/의미? – Sarfraz

+0

안정적으로 작동하지 않습니다. Assoziative 배열의 항목 순서는 입력 순서에 따라 다릅니다. 배열의 첫 번째 요소는'test' 대신 'blah'가 될 수도 있습니다. – dbemerlin

+0

@dbemerlin : 의견을 뒷받침하는 참고 자료가 있습니까? 나는 항상 연관 배열이 삽입 순서에 따라 정렬되었다고 생각했지만 설명서에서 어떤 식 으로든 다른 것을 발견 할 수는 없습니다. – grossvogel

답변

2
$array = array_values($array); 
구현

하지만 왜 필요한가요? 당신의 본보기를 확장 할 수 있습니까?

+0

원래의 키가 필요합니다. 문자열 인 키에 값을 할당하려고합니다. 숫자 만 있습니다. – NoOne

1

당신은 "ArrayAccess을 구현한다"고 자신의 클래스를 수동으로 처리 할 수있는 같은 수준의 그런 행동에 대한

을 구현할 수

UPD : 그냥 재미

class MyArray implements ArrayAccess 
{ 
    private $data; 
    private $keys; 

    public function __construct(array $data) 
    { 
     $this->data = $data; 
     $this->keys = array_keys($data); 
    } 

    public function offsetGet($key) 
    { 
     if (is_int($key)) 
     { 
      return $this->data[$this->keys[$key]]; 
     } 

     return $this->data[$key]; 
    } 

    public function offsetSet($key, $value) 
    { 
     throw new Exception('Not implemented'); 
    } 

    public function offsetExists($key) 
    { 
     throw new Exception('Not implemented'); 
    } 

    public function offsetUnset($key) 
    { 
     throw new Exception('Not implemented'); 
    } 
} 

$array = new MyArray(array(
    'test' => 'thing', 
    'blah' => 'things' 
)); 

var_dump($array[0]); 
var_dump($array[1]); 
var_dump($array['test']); 
var_dump($array['blah']); 
2

당신은 조회 배열을 생성하는 array_keys을 사용할 수

<?php 
$array = array 
(
    'test' => 'thing', 
    'blah' => 'things' 
); 
$lookup = array_keys ($array); 
// $lookup holds (0=>'test',1=>'blah) 

echo $array[$lookup[0]]; // thing 
echo $array[$lookup[1]]; // things 

echo $array['test']; // thing 
echo $array['blah']; // things 
?> 
+0

그래, 작동하고 가장 잘 해결됩니다. – NoOne