2010-08-14 6 views
0

Итак, у меня есть класс, и я хотел бы иметь возможность получить любое имя trackName (двухмерный массив) после инициализации объекта в другом скрипте php. Это является частью класса, который имеет отношение:Открытый класс PHP как двумерный массив, как?

class fetchData{ 
public $artistName; 
public $trackName; 

public function getArtistTracks(){ 
    $i = 0; 
    if($tracks = getTracks()){ 
     foreach ($tracks['results'] as $track){ 
      // $artistName is an array of strings (defined as public) 
      $name[$this->artistName][$i] = $track['name']; 
      $i++;    
     } 
    } 

    return $name; 
} 

// later in the class one other function there is this 
function initialize(){ 
    ... 
    ... 
    $this->trackName = $this->getArtistTracks(); 
} 
} 

Вот как я думал, что я мог бы назвать artistName и trackName из другого сценария:

$temp = new fetchData(); 
echo $temp->artistName[3]; // this works (returns 'some_artist_name' for example) 
echo $temp->trackName[$temp->artistName[3]][1]; // this doesn't work 
echo $temp->trackName['some_artist_name'][1]; // this also doesn't work 

Я попробовал несколько других способов. Например, вместо этого:

$name[$this->artistName][$i] = $track['name']; 

Я бы поставил это:

$this->name[$this->artistName][$i] = $track['name']; 

без возвращения в getArtistTracks() и без линии в Initialize(), но это не работает также. как я могу получить эти имена дорожек из другого сценария?

спасибо =)

+1

Почему бы просто не сделать print_r переменной trackName, чтобы узнать, что она на самом деле содержит? Ваша проблема в том, что trackName, вероятно, не содержит того, что вы думаете. –

+0

Да, вы были правы, $ i был в неправильном цикле, поэтому индексы были полностью wromg. спасибо =) – pootzko

ответ

0

закрыть это одно вверх, функция должна выглядеть следующим образом ($ я был в неправильном цикле):

public function getArtistTracks(){ 
    if($tracks = getTracks()){ 
     $i = 0; 
     foreach ($tracks['results'] as $track){ 
      // $artistName is an array of strings (defined as public) 
      $name[$this->artistName][$i] = $track['name']; 
      $i++;    
     } 
    } 

    return $name; 
} 
0

$ имя [$ this-> artistName - -> [$ i] < ---] = $ track ['name'];

, конечно, только если $ temp-> artistName; это массив.

Смежные вопросы