2015-04-11 2 views
2

У меня есть массив в PHP. По какой-то причине я не могу понять. Он всегда имеет родительский массив ключа [0]. Я не уверен, почему это происходит. У меня массив как оператор foreach. Отображаемые данные верны в массивах. Как я могу получить этот массив:PHP Array всегда имеет родительский 0 Array

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [DB_ID] => 8umad0aqpt7re9 
        [Name] => Customers 
        [Record_Name] => Customer 
        [Description] => Customers Database 
        [Count] => 0 
       ) 

      [1] => Array 
       (
        [DB_ID] => 37vcv0ab8hwtx9 
        [Name] => Estimates 
        [Record_Name] => Bid 
        [Description] => Estimates Database 
        [Count] => 0 
       ) 

      [2] => Array 
       (
        [DB_ID] => 8nhenyhnh5tal9 
        [Name] => Customers 
        [Record_Name] => Customer 
        [Description] => Customers Database 
        [Count] => 0 
       ) 

     ) 

) 

к массиву:

Array 
(
      [0] => Array 
       (
        [DB_ID] => 8umad0aqpt7re9 
        [Name] => Customers 
        [Record_Name] => Customer 
        [Description] => Customers Database 
        [Count] => 0 
       ) 

      [1] => Array 
       (
        [DB_ID] => 37vcv0ab8hwtx9 
        [Name] => Estimates 
        [Record_Name] => Bid 
        [Description] => Estimates Database 
        [Count] => 0 
       ) 

      [2] => Array 
       (
        [DB_ID] => 8nhenyhnh5tal9 
        [Name] => Customers 
        [Record_Name] => Customer 
        [Description] => Customers Database 
        [Count] => 0 
       ) 

) 

Мой PHP:

$user_id = DBMGR::Auth(); 

SQL::Query("SELECT * FROM `".USER_ROLES_TBL."` WHERE `".USER_ROLES_ID."` = :user_id;"); 
SQL::Bind(":user_id", $user_id); 
$Allowed_Databases = SQL::Results(); 
$Allowed_Databases = Encryption::DecryptArray($Allowed_Databases); 

$List_Databases = array(); 
$i = 0; 
foreach($Allowed_Databases as $key => $db){ 
    SQL::Query("SELECT COUNT(*) FROM `" . $db[USER_ROLES_DB_ID] . "`.`".MAIN_TBL."`;"); 
    $count = SQL::Single(); 
    $count = $count['COUNT(*)']; 

    SQL::Query("SELECT * FROM `main`.`".DATABASE_TBL."` WHERE `".DATABASE_ID."` = :db_id;"); 
    SQL::Bind(":db_id", $db[USER_ROLES_DB_ID]); 
    $DB_Info = SQL::Single(); 
    $DB_Info = Encryption::DecryptSingleArray($DB_Info); 

    $List_Databases[$i]['DB_ID'] = $DB_Info[DATABASE_ID]; 
    $List_Databases[$i]['Name'] = $DB_Info[DATABASE_NAME]; 
    $List_Databases[$i]['Record_Name'] = $DB_Info[DATABASE_RECORD_NAME]; 
    $List_Databases[$i]['Description'] = $DB_Info[DATABASE_DESCRIPION]; 
    $List_Databases[$i]['Count'] = $count; 
    $i++; 

} 
echo "<pre>"; 
print_r($List_Databases); 
echo "</pre>"; 
+1

Вы уверены, что распечатываете тот же массив здесь и на своей машине? Синтаксис/идея кажется правильным до сих пор. Кроме того, вы пытались идти шаг за шагом, например. распечатывать первую итерацию, а затем прерывать цикл или прерывать фрагмент кода? – sitilge

ответ

-2

Попробуйте это: -

$user_id = DBMGR::Auth(); 

SQL::Query("SELECT * FROM `".USER_ROLES_TBL."` WHERE `".USER_ROLES_ID."` = :user_id;"); 
SQL::Bind(":user_id", $user_id); 
$Allowed_Databases = SQL::Results(); 
$Allowed_Databases = Encryption::DecryptArray($Allowed_Databases); 

$List_Databases = array(); 

foreach($Allowed_Databases as $key => $db){ 
    SQL::Query("SELECT COUNT(*) FROM `" . $db[USER_ROLES_DB_ID] . "`.`".MAIN_TBL."`;"); 
    $count = SQL::Single(); 
    $count = $count['COUNT(*)']; 

    SQL::Query("SELECT * FROM `main`.`".DATABASE_TBL."` WHERE `".DATABASE_ID."` = :db_id;"); 
    SQL::Bind(":db_id", $db[USER_ROLES_DB_ID]); 
    $DB_Info = SQL::Single(); 
    $DB_Info = Encryption::DecryptSingleArray($DB_Info); 
$new_array = array();//created new array inside foreach 
    //assigning values to this array 

    $new_array['DB_ID'] = $DB_Info[DATABASE_ID]; // REMOVE $i so that extra indexes will not made 
    $new_array['Name'] = $DB_Info[DATABASE_NAME]; 
    $new_array['Record_Name'] = $DB_Info[DATABASE_RECORD_NAME]; 
    $new_array['Description'] = $DB_Info[DATABASE_DESCRIPION]; 
    $new_array['Count'] = $count; 
    $List_Databases = array_push($List_Databases,$new_array[0]);// push it into resultant array 
} 
echo "<pre>"; 
print_r($List_Databases); 
echo "</pre>"; 

Примечание: - удалить $i=0 и $i++; в петле foreach.

+5

Я думаю, что объяснение, что, где и почему вы изменили код, было бы полезно для OP и других читателей – Rizier123