2013-09-29 47 views
1

當我試圖將值添加到一個數組,它只是輸出數組對我來說,陣列功能輸出沒有

function getAllRoles($format='ids') 
{ 
$format = strtolower($format); 
$query = $this->db->prepare("SELECT * FROM roles"); 
    $query->execute(); 
    $resp = array(); 
foreach ($query as $row){ 
    if ($format == 'full'){ 
     $resp[] = array("ID"=>$row['ID'],"Name"=>$row['roleName']); 
    }else{ 
     $resp[] = $row['ID']; 
    } 
} 
return $resp; 
} 

爲了讓我輸入數組,

echo "<br>getAllRoles: ".$Secure->getAllRoles("full"); 
+0

不'echo'打印數組後必須使用'的print_r($陣列)'或'var_dump($ array)' – Salim

回答

2

您使用字符串連接運算符,所以所有參數都將轉換爲字符串。 轉換爲字符串的數組顯示爲Array

你期望輸出是什麼?

你必須遍歷數組才能輸出每個元素。你的情況,你有一個「固定」反正數組(數據結構的不會改變,你總是知道的元素在裏面的號碼):

$data = $Secure->getAllRoles("full"); 
echo $data['ID']; 
echo $data['Name']; 
+0

我期望它像ID => 1,Name => Admin – 8803286

+0

@ 8803286然後使用'print_r($ data)'或'var_dump($ data)'。 – ComFreek

1

你不能在陣列上執行echoecho預計參數爲string。 你可以做的是循環數組和打印/回聲各項指標比一樣:

foreach($arrayname as $something) 
{ 
echo $something; 
} 

這將打印出的每個索引。 如果你試圖回顯一個數組,你將得到Array作爲輸出。 閱讀here瞭解更多信息。

0

你輸出數組: -

你的函數返回數組: -

$resp=array("ID"=>$row['ID'],"Name"=>$row['roleName']); 

如果你想回響在陣列中的所有元素,那麼你必須要提到它的關鍵。

你可以做到這一點: -

$allRoles = $Secure->getAllRoles("full"); 

echo "<br>getAllRoles: ".$allRoles['name']; 
0

變化

if ($format == 'full'){ 
    $resp=array("ID"=>$row['ID'],"Name"=>$row['roleName']); 
}else{ 
    $resp = $row['ID']; 
} 

if ($format == 'full'){ 
    $resp[]=array("ID"=>$row['ID'],"Name"=>$row['roleName']); 
}else{ 
    $resp[] = $row['ID']; 
} 
0

echo打印您必須使用print_r($array)var_dump($array)foreach

012數組

不要使用

echo $Secure->getAllRoles("full"); 

用途:

print_r($Secure->getAllRoles("full")); 

or 

var_dump($Secure->getAllRoles("full")); 

or 

$resp = $Secure->getAllRoles("full"); 
foreach($resp as $key=>$value) { 
    echo "$key = $value"; 
} 
0

你可以使用echo輸出數組。您可以使用var_dumpprint_r來獲取陣列的詳細信息。

var_dump($array); 
print_r($array); 

,或者如果你仍然需要去迴音然後用json_encode轉換成JSON字符串像

echo json_encode($array);