2013-09-29 5 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

вы не можете выполните команду echo на массиве. echo ожидает, что параметр будет 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

Не используйте

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

вы можете использовать эхо для вывода массива. Вы можете использовать var_dump или print_r, чтобы получить сведения о массиве.

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

или, если вам все еще нужно пойти на эхо затем использовать json_encode преобразовать в строку JSON, как

echo json_encode($array); 
Смежные вопросы