2014-07-18 1 views
-1

PHP에서 이해할 수없는 이상한 행동을하고 있습니다.PHP array_merge : 인수가 배열이 아니겠습니까?

나는 코드를 간소화하고 필수적인 것을 유지하려고 노력했다. $ array는 2-D 배열입니다 (각 $ arr에는 여러분이 보는 bbcode와 같은 속성이 있습니다). 인수 1, 즉 $ temp가 배열이 아니라고 불평합니다. 그것을 배열로 형변환하면 가짜 결과가 나온다. 물론, 이것은 필요한 다른 코드에 대한 자세한 정보를 제공 할 수있는 다른 코드 안에 있지만 아이디어는 무엇입니까? 나는 다른 곳에서 똑같은 종류의 코드와 문법을 사용했는데 불평하지 않는다. ...

편집 : 자유롭게 downvote 자유롭게, 내가 함께 일한 것에 대해 기억을 잃었고 어떻게 일을 해왔 어. 전에 프로그래밍 질문을하지 않아도되었습니다. (몇 년 동안), 여러분 덕분에 엄청나게 빨랐습니다!

+0

실제 제목과 질문의 제목은 무엇입니까? –

+0

오류 메시지에 배열이 아니라고 표시되면 배열이 아닙니다. vardump 또는 gettype() 할 때 어떤 일이 발생합니까? –

+0

나는 그것을 철회, 항상 배열 (맞춤법 오류) – Shakespeare

답변

0
  1. 개체 ($ arr)를 배열 ($ temp)과 병합하려고합니다. PHP는 $ arr이 배열이 아니라고 불평해야합니다. 예제 코드 아래를 참조하십시오 : 당신이 그렇게하면 어떻게되는지 the type juggling documentation을 확인 않을 경우 PHP에서

    php > $obj = new StdClass(); 
    php > $obj->property = "value"; 
    php > $arr = []; 
    php > array_merge($arr, $obj); 
    
    Warning: array_merge(): Argument #2 is not an array in php shell code on line 1 
    
    Call Stack: 
        33.2510  230352 1. {main}() php shell code:0 
        33.2510  230960 2. array_merge() php shell code:1 
    
  2. 타입 캐스팅은 항상 조금 까다 롭습니다.

  3. 코드를 최적화하기 전에 무엇을하고 싶습니까? 중복 bb 코드가 정리 된 새로운 목록?

+0

어떤 이유인지 그것은 잘못된 논거에 대해 불평하고있었습니다. 나는 그 이유를 알아 내려고하지 않으며, 혼란의 원천이었습니다. 좋은 답변 주셔서 감사합니다 :) 3, 아니오, 그리고 이것은 달성하려는 노력하고있는 가장 효율적인 방법입니다 – Shakespeare

1

두 가지 주장을 살펴 보겠습니다.

  • $temparray()로 초기화 및 반복 (일이 잘못하지 않는 한이) 항상 배열 array_merge의 반환 값에 할당됩니다.

  • $arr. 글쎄, 이름이 맞지, 그렇지? 그것은 대략 $two = 3;만큼 신뢰할 만하다. $arr->bbcode에 액세스하고 있으므로 분명히 객체이며 배열이 아닙니다.

$temp[] = $arr;을 찾으셨습니까?

+0

사실 그게, 그리고 내가 뭘? 've는 정확히 모범적 인 프로그래밍이 아닙니다. 왜 다른 곳에서 일 했나요? (똑같은 상황에서)? 편집 : 좋아, 나는 내가 다르게 한 것을 본다. – Shakespeare