문제

나는 이 질문은 이전에 그는 결론을 내렸다 그것이 버그에서 5.2.5.만,그것은 여전히 깨어진에 5.2.6,적어도에 대한 저:

알려 주시기 바랍니다면 그것은 깨지거나 당신을 위해 작동:

$obj = new stdClass();
$obj->{"foo"} = "bar";
$obj->{"0"} = "zero";
$arr = (array)$obj;

//foo -- bar
//0 --    {error: undefined index}
foreach ($arr as $key=>$value){
    echo "$key -- " . $arr[$key] . "\n";
}

어떤 방법으로"수정"배열한 후에는 캐스팅에서 stdClass?

도움이 되었습니까?

해결책

확실히는 것과 같은 버그를 나(PHP5.2.6).

당신이 해결할 수 있습니다 배열은 다음과 같다:

$arr = array_combine(array_keys($arr), array_values($arr));

그것은 보고서 이 버그 보고서 그 표시로 가짜... 문서 말합니다:

키 회원은 변수 이름을 몇 가지 주목할 만한 예외:정수 속성은 없으므로;

다른 팁

실험의 비트를 보여줍 phps 자신의 기능을 유지되지 않 이 fubarity.

function noopa( $a ){ return $a; }
$arr = array_map('noopa', $arr ); 
$arr[0]; # no error! 

이에 효과,그냥 복사본을 만들의 배열과정 중에 발생합 복사합니다.

궁극적으로,그것은 디자인에 실패,전반적으로 사용하여 시험 array_merge 에서 당신이 생각하는 방식 그것은 작품에서 배열과 혼합된 숫자 및 문자열 키?

번호가 매겨진 모든 요소로 복사되고 일부는 다시 번호는 경우에도,일부 단순히 될 일이 문자열을 캡슐화 번호,결과적으로 수십 가지의 세부 항목이 포함되어 있 브루의 구현 array_merge 만이 문제를 해결합니다.

다시 때 php 를 만들기 위해 노력했 복제의 펄 못했고,그들은 개념을 파악하지 않 배열의 표시는 다른 개념,instead globbed 으로 그들을 함께 하나의 보편적인 우산입니다.좋은니다!

그 다음에는 그들이 휴식을 관리하는 네임스페이스 구분하기 때문에 일부의 기술적인 문제는 다른 언어에는 몇 가지 이유가 발생했습니다.

감사 RoBorg..나는 그냥 발견 뿐만 아니라:)

여기에서 다른 솔루션을 확실하지 않다면 그것은 더 빠르 또는 아닙니다:

unserialize(serialize($arr));
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top