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");
4

6 回答 6

2

您正在使用字符串连接运算符,因此所有参数都将转换为字符串。转换为字符串的数组显示为Array

你期望输出是什么?

您必须遍历数组才能输出每个元素。在您的情况下,无论如何您都有一个“固定”数组(数据结构不会改变,并且您始终知道其中的元素数量):

$data = $Secure->getAllRoles("full");
echo $data['ID'];
echo $data['Name'];
于 2013-09-29T09:02:58.797 回答
1

你不能echo在数组上执行。echo期望参数为string. 您可以做的是遍历数组并打印/回显所有索引,例如:

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

这将打印出每个索引。如果你试图回显一个数组,你会得到Array一个输出。阅读此处了解更多信息。

于 2013-09-29T09:02:05.350 回答
0

您正在输出数组:-

您的函数返回此数组:-

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

如果要回显数组中的所有元素,则必须提及其键。

你可以做到这一点: -

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

 echo "<br>getAllRoles: ".$allRoles['name'];
于 2013-09-29T09:02:14.650 回答
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'];
}
于 2013-09-29T09:04:46.037 回答
0

不要echo打印必须使用的数组print_r($array)orvar_dump($array)foreach

不要使用

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";
}
于 2013-09-29T09:05:04.227 回答
0

您可以使用 echo 输出数组。您可以使用 avar_dump或 aprint_r来获取数组的详细信息。

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

或者如果您仍然需要回显,则使用 ajson_encode转换为 json 字符串,例如

echo json_encode($array);
于 2013-09-29T09:05:49.170 回答