2014-05-11 5 views
0

stdClass 객체를 문자열로 변환하고 stdClass 객체의 최대 값을 가진 배열을 줄이려합니다.PHP는 stdClass 객체를 문자열로 변환하고 최대 값을 가진 배열을 줄입니다

이 내 배열 : 기본적으로

Array 
(

[135] => Array 
    (
     [0] => stdClass Object 
      (
       [ID] => 145 
      ) 

     [1] => stdClass Object 
      (
       [ID] => 138 
      ) 

     [2] => stdClass Object 
      (
       [ID] => 139 
      ) 

    ) 

[140] => Array 
    (
     [0] => stdClass Object 
      (
       [ID] => 163 
      ) 

     [1] => stdClass Object 
      (
       [ID] => 155 
      ) 
) 

은 다음과 같아야합니다

Array 
(
[135] => 139 
[140] => 164 
) 

이 가능합니까? 나는 다양한 foreach는 루프를 시도했다하지만 난

지금까지 시도 내 ... stdClass 객체와 그것을 얻을하지 않습니다

foreach($ids as $k => $v) { 
    for($i = 0; $i < count($v); $i++) { 
     $idss[$i] = array()$v; 
    } 
} 

작동하지 않습니다.

+0

일종의 다차원 배열이 있는데 일반 배열을 원하십니까? 나는 회심 뒤에 "논리"가 보이지 않는다. 제발 좀 더 자세히 설명해주세요. "객체"를 제거하는 쉬운 방법 중 하나는'json_encode()'를 사용하여 그것을 인코딩 한 다음 두 번째 매개 변수를'true'로 설정하여 다시 디코딩하는 것입니다 : $ output = json_decode (json_encode ($ input), true); ' – HamZa

답변

5

귀하의 목적을 해결할 것입니다. 뭐가 잘못되었는지 알려주세요.

$ids[135][0]->ID = 145; 
$ids[135][1]->ID = 135; 
$ids[135][2]->ID = 155; 
$ids[140][0]->ID = 125; 
$ids[140][1]->ID = 135; 
$idss = array(); 
foreach($ids as $k => $v) { 
    for($i = 0; $i < count($v); $i++) { 
     if([email protected]$idss[$k] || $v[$i]->ID > $idss[$k]) 
     { 
      $idss[$k] = $v[$i]->ID; 
     } 
    } 
} 
echo "<Pre>"; 
print_r($idss); 
die; 
+1

'@'? 'isset ($ idss [$ k])'를 사용하십시오. –

+0

나는 당신을 사랑한다! 정말 고맙습니다! if 절에서 한 일을 시간을내어 설명해 줄 수 있습니까? :) –

+1

환영합니다. 물론입니다! $ k에는 첫 번째 반복에 대해 135 개의 값이 있습니다. 그래서 $ idss [$ k]가 존재하는지 검사합니다. 존재한다면 조건은 거짓이고 두 번째 조건을 검사합니다. 그것은 $ v [$ i] -> ID> $ idss [$ k]입니다. $ idss [$ k]는 iteration의 새로운 값이 $ idss 배열의 기존 값보다 큰지 확인한 다음 새로운 값으로 대체합니다. 당신이 이해하기를 바랍니다. 그게 내가 무엇을 할 수있는 텍스트 메시지 :) –

0

어떤 루프가 최대 값을 보유하고 있는지 알아 보려면 내부 for 루프에서 일부 compariosn을 수행해야합니다. $arr이 입력 배열 여기 여기

$final_array =array(); 
foreach($arr as $key=>$val){ 
    $max = max(array_keys($val)); 
    $final_array[$key] = $val[$max]->ID ; 
} 

print_r($final_array); 

의 짧은 버전입니다

$new_arr = array(); 
foreach($elements as $index => $value){ 
    $max = -1; 
    $foreach($value as $obj){ 
    if($obj->id > $max) 
     $max = $obj->id; 
    } 
    $new_arr [$index] = $max; 
} 
1

가 이미 대답하지만, 예를 들면 다음과 같습니다.