2015-01-15 3 views
0

45 개의 객체 요소가 포함 된 배열이 있습니다. id, name, is_premium입니다.특정 키 -> 값을 포함하는 객체의 배열을 무작위로 배열합니다.

MySQL에서받은 메시지는 is_premium desc이며, 일부는 목록 끝에 is_premium = 0입니다.

배열 끝에 is_premium=0을 유지하면서 is_premium=1 인 요소를 랜덤화할 수 있습니까?

<?php 
//assuming the array of objects is called $array 
$new_array = array_merge(
    shuffle(
     array_filter($array,function($x){return $x['is_premium'] == 1;}) 
    ), 
    array_filter($array,function($x){return $x['is_premium'] == 0;}) 
); 
?> 
+3

당신은 이것에 대한 코드를 작성 시도해 봤어 :이 작동하는 경우 – hfatahi

+0

예, premium = 1을 다른 배열로 분할하여 설정을 해제하고 임의화한 다음 is_premium = 0으로 병합하지만이 방법은 서버를 초당 20 요청으로 오버로드합니다. (내 원래 배열이 더 큽니다.) –

+0

원하는 순서대로 데이터를 얻기 위해 더 나은 쿼리 방법에 대한 제안을 찾고 있습니까? 아마도 몇 가지 코드 예제가 도움이 될 것입니다. –

답변

0

는 시도?
+1

작은 편집으로 작업했습니다. shuffle()이 bool을 반환하기 때문입니다. –

관련 문제