2011-02-17 5 views
0

arrayObject에 대한 예외 처리에 대한 도움이 필요합니다. 일련의 객체를 반복하지만 오프셋이 끝날 때 치명적인 예외가 발생합니다. 코드는 다음과 같습니다PHP arrayObject를 사용한 치명적인 예외 처리

while ($c <= 10) { 
    $num = 1; 
    $b = $c-$num; 
    $object_to_iterate = $q[$b]; 
    $obj = new ArrayObject ($object_to_iterate); 
    iterateObject($obj); 
    $C++; 
} 

오류 :

Fatal error: Uncaught exception 'InvalidArgumentException' 

어떤 도움이 좋을 것. manual에서

+1

통해 작동

while ($c <= 10) { $num = 1; $b = $c-$num; $object_to_iterate = $q[$b]; //exception handling if (empty($q[$b])) { break; } else { $obj = new ArrayObject($object_to_iterate); iterateObject($obj); } $C++; } 

을, '$ c','$ q' 또는'$ num'이라면 이것을 알아내는 것이 정말 어려울 것입니다 ... – BoltClock

+0

치명적인 예외는 'new ArrayObject'와 관련이 있습니다. 나는 $ b 오프셋이 비어있을 때 ArrayObject를 잡아야한다고 생각합니까? –

답변

0

확인이 그것을 할 수있는 가장 좋은 방법입니다하지만 난 다음 코드를 사용하는 경우 나도 몰라 : 그것은`$ b`의 맥락이나 설명없이

0

:

이제
The input parameter accepts an array or an Object. 

@BoltClock 말했듯이 : Q 다음, 배열 인 경우

, C, Q 및 NUM이 무엇인지 나 모르게 알아 내기 위해 정말 열심히하지만,
$object_to_iterate = $q[$b]; 

은 문자열 일 수 있습니까? 그리고

$obj = new ArrayObject ($object_to_iterate); 

에는 개체 또는 배열이 아닌 인수가 있습니까? 어쩌면 그에 $object_to_iterate, 그리고 그것을 확인 배열 또는 개체입니다.

+0

나는 $ q 객체가 $ b offset이라는 숫자를 찾고 그 번호가 없으므로 ArrayObject가 $ q [$ b]를 사용하려고 시도하고 있다는 것을 생각했다. 그것은 비어 있고 예외이다. 던져. 말이 돼? –

+0

오프셋 $ b가있을지라도, $ q [$ b]는 $ q 안에 무엇이 들어 있는지 실제로 알지 못해서는 알 수없는 것일 수 있습니다. 그래서 결국 목표는'object_to_iterate'가 실제로 객체 (또는 배열)인지 확인하는 것입니다. – Nanne

0

$ c는 무엇으로 시작합니까? 0 (가능성이 높음)이면 $ b = -1이고 $ q [-1]을 얻으려는 것입니다.이 $ q [-1]은 다시 존재할 가능성이 없습니다. 따라서 ArrayObject 생성자에 아무 것도 전달하지 않습니다.

+0

나는 그것이 맞다라고 생각하지만, 얼마나 많은 객체가 존재 하는지를 모르기 때문에 예외가 발생하는 것을 막기 위해 코드를 작성하는 데 어려움을 겪고있다. –

+0

$ object_to_iterate가 객체인지 테스트하기 전에 is_object()를 사용하십시오. – Capsule

+0

'count ($ q)'는 얼마나 많은 객체가 있는지 알려줍니다. –