2013-07-19 2 views
-5

내가 질문 한 배열 문제는이 코드에서 볼 수 있습니다.프로그래머는 이런 종류의 런타임 추가가 배열에 발생하는 문제를 어떻게 처리합니까?

$sample=array('2'=>"A", "abc"=>"B", 2=>"C"); 
$sample_keys=array_keys($sample); 
foreach ($sample_keys as $keys) 
{ 
    echo $keys, $sample[$keys],"\n"; 
} 

The output is 
2C 
abcB 

$ 샘플 [0]를 $ 샘플이하는 오류를 제공합니다 [1]

어떻게 배열이 종류의 런타임 추가에서 발생하는 문제와 프로그래머 거래? 나는 PHP

+0

나는 당신의 질문을 정말로 이해하지 못하지만 배열의 키와 값을 정의했습니다. 따라서 첫 번째 요소에 접근하려면'$ sample [ '2']'를 사용하고 두 번째 요소는'$ sample [ 'abc'], 세 번째 요소는'$ sample [2]'가됩니다. 희망이 도움이됩니다. –

+1

스 니펫의 첫 번째 코드 줄에 해당 키를 정의하지 않은데 왜 '$ sample [0]'이있을 것으로 기대합니까? –

+0

@AurelioDeRosa : 원형 교차로이지만 작동합니다. iteration은'$ sample_keys'를 통해 수행됩니다. '$ sample_keys'의 각 값은'$ sample'의 키입니다. – cHao

답변

-1

배열을 통해 루프 올바른 방법으로 초보자는 오전 :

$sample=array('2'=>"A", "abc"=>"B", 2=>"C"); 
foreach ($sample as $k => $v) 
{ 
    echo "key=$k,value=$v,"\n"; 
} 

그래서, 같은 C++ 말할 PHP에 대한 런타임 문제가 없습니다. 배열이 끝나면 foreach가 알 수 있습니다.

1

manual에 따르면 : "유효한 정수를 포함하는 문자열은 정수 유형으로 변환됩니다. 예를 들어, '8'키는 실제로 8 아래에 저장됩니다. 반면에 '08'은 캐스트되지 않습니다. 올바른 10 진 정수가 아닙니다. "

따라서, 코드에서 :

$sample_keys=array_keys($sample); 

변수 $sample_keys 만 값을 2abc이 포함되어 있습니다.

멀리까지 "$sample[0]는 오류를 제공합니다. 따라서 $sample[1]도 마찬가지입니다"라고 말할 수 있습니다. 배열에 01 키가 없습니다. 여기에는 2abc이 포함됩니다.

프로그래머는 런타임에 배열에 추가 할 수있는 가능한 값을 계획함으로써 이런 유형의 것을 제어 할 수 있습니다. 필요한 경우 그는 array_key_exists과 같은 기능을 사용하여 주어진 키가 배열에 있는지 알아 내고 필요에 따라 조정할 수 있습니다.

관련 문제