2013-05-05 3 views
0

나는 새로운 인덱스를 만들지 또는 기존 인덱스를 사용할지 여부를 미리 알지 못하는 상황에서 배열에 요소를 추가하는 우아한 방법이 있습니까?더 복잡한 배열에 값을 더하는 것

$array[$k] = $foo; // this overwrites existing index, never creates one 
$array[] = $foo; // this always creates new one, never overwrites 
array_push(...); // always creates new index 
$array[null] = $foo // sadly, null is casted to empty string 

이런 식으로 뭔가 할 것이 좋을 것이다 :

if($key === null) $array[] = $foo; 
else $array[$key] = $foo; 

을하지만 하나 개의 표현에

답변

1
$array[!isset($key) || $key === null? count($array) : $key ] = $foo; 

갱신을 맞게 :이 무엇 array_key_exists()입니다 isset()

+0

아, 사실 삼원 연산자는 아마도 얻을 수있는만큼 우아합니다. 고맙습니다. – enrey

+0

내가 지금 생각하고있는 것처럼, 그것은 내가 원하는 것을 정말로하지 않는다. 배열의 크기와 동일한 숫자의 인덱스가 이미 존재하는 경우, 인덱스를 덮어 씁니다. 어머, PHP. – enrey

-1

개선 ~입니다!

if(array_key_exists($key, $array)) 
    $array[$key] = $value; 
else 
    $array[] = $value; 
관련 문제