2011-10-04 3 views
0

[hits]가 0보다 큰 배열의 값을 추출하거나 가져 오는 방법은 무엇입니까?PHP 배열 : 0 값이없는 배열을 얻으려면 어떻게해야합니까?

Array 
(
    [0] => stdClass Object 
     (
      [hits] => 0 
      [date] => 2011-09-29 17:58:25 
     ) 
    [1] => stdClass Object 
     (
      [hits] => 1 
      [date] => 2011-09-29 16:55:42 
     ) 

    [2] => stdClass Object 
     (
      [hits] => 1 
      [date] => 2011-09-29 17:54:38 
     ) 

    [3] => stdClass Object 
     (
      [hits] => 1 
      [date] => 2011-09-29 17:58:25 
     ) 
    [4] => stdClass Object 
     (
      [hits] => 0 
      [date] => 2011-09-29 17:58:25 
     ) 
    [5] => stdClass Object 
     (
      [hits] => 3 
      [date] => 2011-09-29 17:58:25 
     ) 

) 
+0

@stereorog : 동의, 또한 ['의 printf()'컨버터 (HTTP를 확인 : // codepad합니다. viper-7.com/eVhuuJ) [hakre] (http://stackoverflow.com/users/367456/hakre). – alex

답변

1

우선 배열 배열이 아니라 객체 배열입니다. 그냥 물마루를 걸러 내고 조건부 검사를하십시오. 이처럼 :> = PHP 5.3를 가정

<?php 
$with_hits = array(); 
foreach ($objects as $object){ 
    if ($object->hits > 0){ 
    $with_hits[] = $object; 
    } 
} 
?> 
1

당신은 hits을 테스트 array_walk 또는 array_map 기능을 사용할 수 있습니다.

$hits = array(); 

function fill_hits($key, $item) 
{ 
    global $hits; 
    if ($item->hits > 0) $hits[] = $obj; 
} 

array_walk('fill_hits', $array); 
6

...

$newArr = array_filter($arr, function($obj) { 
    return $obj->hits > 0; 
}); 
+0

인수를 바꿔야합니다. –

+0

Offtopic : 콜백을 지원하는 편집자는 거의 없습니다 ... –

1
<?php 
$ret = array(); 
foreach($data as $key => $obj) { 
    if($obj->hits > 0) { 
     $ret[$key] = $obj; 
    } 
} 

print_r($ret); // your filtered data here 

?> 
관련 문제