2013-06-18 1 views
0

현재 lat.fm api로 앱을 개발하고 있습니다.last.fm api - random/shuffle foreach 루프

last.fm 그룹에서 주간 트랙 목록을 가져 오는 기능이 있습니다.

목표는 앨범 아트 워크를 가져 와서 "gridview"템플릿을 만드는 것입니다.

가 가 내가 주문 last.fm에서 트랙을 randomise보다는 그들 당겨하는 foreach 루프에서 PHP 함수 shuffle을 사용하고 싶습니다

그들에게 당신을 제공

public function getWeeklyTrackChartGrid($methodVars) { 
     // Check for required variables 
     if (!empty($methodVars['group'])) { 
      $vars = array(
       'method' => 'group.getweeklytrackchart', 
       'api_key' => $this->auth->apiKey 
      ); 
      $vars = array_merge($vars, $methodVars); 

      if ($call = $this->apiGetCall($vars)) { 
       $i = 0; 


       //shuffle($call->weeklytrackchart->track); 

       $loopN = $call->weeklytrackchart->track; 


       foreach ($loopN as $track) { 

        require 'config.php'; 
        //if(++$i > $userLimit*2) break; 


        $albumArtS = $tracks['album']['image']['small'] = (string) $track->image[0]; 
        $albumArtM = $tracks['album']['image']['small'] = (string) $track->image[1]; 
        $albumArtL = $tracks['album']['image']['small'] = (string) $track->image[2]; 

        $playCounts = $tracks[$i]['playcount'] = (string) $track->playcount; 

        ?> 


         <?php if ($playCounts > 1) { ?> 

         <?php if ($albumArtL) { ?> 

          <img src="<?php echo $albumArtL; ?>" /> 

          <?php } ?> 

         <?php } else { ?> 

         <?php if ($albumArtM) { ?> 

          <img src="<?php echo $albumArtM; ?>" /> 

          <?php } ?> 

         <?php } ?> 



        <?php if ($albumArtwork == "yes") { ?> 


         <?php if ($albumArt) { ?> 




         <?php } }?> 



       <?php $i++; 
       } 
       return $tracks; 
      } 
      else { 
       return FALSE; 
      } 
     } 
     else { 
      // Give a 91 error if incorrect variables are used 
      $this->handleError(91, 'You must include a group variable in the call for this method'); 
      return FALSE; 
     } 
    } 
:

아래의 코드는 않습니다 .

당신이 내가 내가 다음과 같은 경고 얻을이 추가 할 때 같이 밖으로 위의 셔플 기능을 주석 havent 한 볼 수 있듯이 :에

Warning: shuffle() expects parameter 1 to be array, object given in 

어떤 아이디어 무슨 문제가 될 수 있을까?

건배, 댄

답변

0
$loopN = (array) $call->weeklytrackchart->track; 
shuffle($loopN); 
+0

은 $ loopN의 VAR를 교체하려면 즉? – danyo

+0

예, shuffle()의 매개 변수는 배열이어야하며 $ call-> weeklytrackchart-> track이라는 객체를 넣으면 작동하지 않습니다. (array)를 사용하여 단순히 객체를 배열로 변환하면됩니다. –

+0

나는 이것을 시도했지만 전혀 출력하지 않는 것 같습니까? – danyo