2017-04-13 46 views
0

我有一個小問題,我似乎無法解決。我有一些數據從數據庫中提取,在顯示數據之前,我想操縱一些數據。這裏是我的功能處理這些:php - 數組不輸出所有值

public function getPageContent($id) 
{ 
    $menutopic_model = new Menu_Topic(); 
    $content = $menutopic_model->getAllContent($id); 

    //var_dump($content);   

    $data = array(); 

    foreach ($content as $value) 
    { 
     $title = explode(',', $value->title); 
     $filename = explode(',', $value->filename); 

     $data['topicname'] = $value->topicname; 
     $data['title'] = $title; 
     $data['filename'] = $filename; 

    }  

    //var_dump($data); 

} 

現在,當我傾倒var_dump($content);,我得到的數據的整個數組,它應該是:

array(2) { 
    [0]=> 
    object(stdClass)#346 (3) { 
     ["topicname"]=> 
     string(19) "Signs giving orders" 
     ["title"]=> 
     string(42) "Stop,No entry,No cycling,No motor vehicles" 
     ["filename"]=> 
     string(179) "DQP0GVcUA2dG8ZfqeVYLO68YodgYnJMOjJw2o2iC.png,vWUcHGX3VVKPT08JXh9mAqZ40pT0vfDJ78Yoqovz.png,bplX8bbwHzHKX9n6SvvQiYNhkWwKxi2bhsrQ94U2.png,8KAEovxQn3EgzHoZg1euSgNYTFupnLdKusJ4SIEP.png" 
    } 
    [1]=> 
    object(stdClass)#345 (3) { 
     ["topicname"]=> 
     string(13) "Warning Signs" 
     ["title"]=> 
     string(111) "Road narrows ahead both sides,Road narrows on right (left if symbol reversed),Crossroads,Junction on bend ahead" 
     ["filename"]=> 
     string(179) "uZ7fnDjlYfKU3pdSQ7wAq4siFryA6jSEitmRyPhp.png,4pslo6cC0I2E606DscWxiDD3sCBW7ZGaESQES4r0.png,xdVBMpV6PTLtX48M67kfWOqy59rsYMDZMuWbqDwl.png,hLtIGikARgARqmSqit4mqNXRFJthipH6O5vqxlbN.png" 
    } 
    } 

而是通過在foreach傳遞數據之後,這var_dump($data);僅返回數組中的最後一項:

array(3) { 
    ["topicname"]=> 
    string(13) "Warning Signs" 
    ["title"]=> 
    array(4) { 
    [0]=> 
    string(29) "Road narrows ahead both sides" 
    [1]=> 
    string(47) "Road narrows on right (left if symbol reversed)" 
    [2]=> 
    string(10) "Crossroads" 
    [3]=> 
    string(22) "Junction on bend ahead" 
    } 
    ["filename"]=> 
    array(4) { 
    [0]=> 
    string(44) "uZ7fnDjlYfKU3pdSQ7wAq4siFryA6jSEitmRyPhp.png" 
    [1]=> 
    string(44) "4pslo6cC0I2E606DscWxiDD3sCBW7ZGaESQES4r0.png" 
    [2]=> 
    string(44) "xdVBMpV6PTLtX48M67kfWOqy59rsYMDZMuWbqDwl.png" 
    [3]=> 
    string(44) "hLtIGikARgARqmSqit4mqNXRFJthipH6O5vqxlbN.png" 
    } 
} 

我應該在上面更改哪個以獲得正確結果?

+0

這是因爲每次你比如'$數據[ 'topicname'] = $值 - > topicname設置;' - 這將永遠會是最後一個項目。 –

回答

0

您每次循環都重複使用相同的數組。因此,創建數組,然後ASA新的次數將其添加到真正的陣列

public function getPageContent($id) 
{ 
    $menutopic_model = new Menu_Topic(); 
    $content = $menutopic_model->getAllContent($id); 

    //var_dump($content);   

    foreach ($content as $value) 
    { 
     $title = explode(',', $value->title); 
     $filename = explode(',', $value->filename); 

     $d = array(); 
     $d['topicname'] = $value->topicname; 
     $d['title'] = $title; 
     $d['filename'] = $filename; 

     $data[] = $d; 
    }  

    //var_dump($data); 

} 
1

你都拿到剛剛因爲你在下面的代碼,您所使用的陣列上寫入值最後一個值。

$data['topicname'] = $value->topicname; 
$data['title'] = $title; 
$data['filename'] = $filename; 

更改代碼:

public function getPageContent($id) 
{ 
    $menutopic_model = new Menu_Topic(); 
    $content = $menutopic_model->getAllContent($id);  

    $data = array(); 

    foreach ($content as $value) 
    { 
     $title = explode(',', $value->title); 
     $filename = explode(',', $value->filename); 

     $data[]=array(
      'topicname'=>$value->topicname, 
      'title'=>$title, 
      'filename'=>$filename); 
    }  

    //var_dump($data); 

}