2011-05-07 7 views
-1

나는이 다음과 같습니다 배열 :PHP 배열

Array 
(
    [0] => stdClass Object 
     (
      [user_id] => 10 
      [date_modified] => 2010-07-25 01:51:48 
     ) 

    [1] => stdClass Object 
     (
      [user_id] => 16 
      [date_modified] => 2010-07-26 14:37:24 
     ) 

    [2] => stdClass Object 
     (
      [user_id] => 27 
      [date_modified] => 2010-07-26 16:49:17 
     ) 

    [3] => stdClass Object 
     (
      [user_id] => 79 
      [date_modified] => 2010-08-08 18:53:20 
     ) 

) 

을하고 제가 할 필요가 인쇄 밖으로 사용자 ID의 쉼표 그렇게 구분 :

10, 16, 27, 79

내가 그것을 루프에 대한 될 것 같은데요하지만 난 PHP에서

아, 그리고 배열 이름을 할 수있는 가장 효율적인 방법을 찾고 있어요입니다 : $ mArray

나는 아래의 방법을 시도하고 있지만이 오류가 계속 : 치명적인 오류 : 이것은 더 재미

+0

순서가 맞아야합니까? –

+0

배열 인덱싱을 arraow 표기법으로 바꿉니다. 아무도 그들이 객체라는 것을 깨닫지 못했습니다. '[ 'user_id'] 대신'-> user_id''이 대답을 바꿨습니다. –

답변

0
$firstTime = true; 
foreach($mArray as $k => $cur) 
{ 
    //echo $firstTime ? $firstTime = false : ', '; //this one-liner cna replace the following two, kind of unclear but i like it 
    if (!$firstTime) echo ', '; 
    else $firstTime = false; 
    echo $cur->user_id; 
} 

에 배열로 입력 stdClass의 개체를 사용할 수 없습니다 :

$f = function($a,$b) {$c = $a ? ', ' : ''; return $a . $c . $b->user_id;}; 
echo array_reduce($f, $mArray, ''); 

제임스 좋은 생각 인 join를 사용하여 암시하고 콤마 문제를

$newArr = array_map(function($x) {return $x->user_id;}, $mArray); //make array of just user-ids 
echo join(', ',$newArr); // implode === join, join is an alias of implode 
+1

위에서 언급 한 James의 방법을 사용하면 끝 부분을 다듬을 수 있습니다. 그러나 루프의 경우 첫 번째 루프 이후에 false로 변경되는 "isFirstItem"bool을 가질 수 있습니다. 그런 다음 isFirstItem에서 false를 확인하는 if 문은 거기에서 이후에 하나를 넣는 대신 쉼표를 사용합니다. – Mikecito

+0

네, 그게 효과가 있습니다. 또한, 예제 에서처럼 숫자 인덱스가 있다고 가정하면'if ($ k == 0)'를 할 수 있습니다. 나는 그 질문의 저자에게 뭔가를 남기려고했다. 그것이 나라면 id는 reduce 함수를 사용합니다 –

+0

이 오류가 발생했습니다 : 치명적인 오류 : – Jordash

0

내가 할 것을 방지 그것은이 좋아 :

$output = ""; 
foreach($mArray as $i => $val) { 
    $output .= $val->user_id . ", " ; 
} 
$output = trim($output, ", "); 

은 지옥, 당신은 아마 join를 사용하고 전부 foreach 루프를 제거 할 수 있습니다!

+0

이 오류가 계속 발생합니다. 치명적 오류 : – Jordash

+0

의 배열로 stdClass 유형의 개체를 사용할 수 없습니다.이 개체는 여기에 있습니다 ... 따라서 작동하지 않습니다 ... –

+0

@soft - 그 이상으로 downvote를 말하지 마십시오. 모두는 그것을 간과했다, 당신은 우리 모두를 downvote 할 예정 이냐? –

0
$length = sizeof($mArray); 
sort($mArray); 
foreach($mArray as $item) 
{ 
    echo $item['user_id'] . ($item !== $mArray[$length]) ? ', ' : ''; 
} 

필요없는 경우 정렬을 제거하십시오.

+0

PHP에서 연결은 플러스가 아닙니다. :) –

+0

@softm 감사합니다. 나는 그것을 깨닫지도 못했습니다. –

0

구분 목록 (이 경우 쉼표로 구분)을 만들어야 할 때마다 배열로 시작하고 구분 기호로 implode()합니다. 이 경우 구분 기호는 쉼표 + 공백이됩니다.

$user_ids = array(); 
foreach($mArray as $item) { 
    $user_ids[] = $item['user_id']; 
} 
$comma_delimited_list = implode(', ', $user_ids);//magic