在PHP中从数组内部的数组中获取数据


Get data from array inside array in PHP

我得到了一个config.php,里面有3个数据库凭据。问题是:我没有得到一个确定的数据库凭据。我不知道如何在不提供数组内部信息的情况下访问数组内部的数组,我也不能这样做,因为我只想在config.php中访问所有信息
我的配置.php:

<?php
    //Do not change identificators
    $cfgrange = array(
        "db_range" => array(
            "db_texts" => array(
                "dbname" => "",
                "username" => "",
                "password" => "",
                "host" => ""
            ),
            "db_images" => array(
                "dbname" => "",
                "username" => "",
                "password" => "",
                "host" => ""
            ),
            "db_users" => array(
                "dbname" => "",
                "username" => "",
                "password" => "",
                "host" => ""
            )
        ),
        "url_range" => array(
            "baseUrl" => "",
            "imagesUrl" => ""
        ),
        "path_range" => array(
            "resources" => $_SERVER["DOCUMENT_ROOT"] . "/resources",
            "library" => $_SERVER["DOCUMENT_ROOT"] . "/resources/library",
            "validators" => $_SERVER["DOCUMENT_ROOT"] . "/resources/validators",
            "images" => array(
                "content" => $_SERVER["DOCUMENT_ROOT"] . "/images/content",
                "layout" => $_SERVER["DOCUMENT_ROOT"] . "/images/layout"
            )
        ),
        "email_range" => array(
            "contact" => "http://example.com",
            "admin" => "http://example.com"
        )
    );
    /* ex. require_once(LIBRARY_PATH . "Paginator.php") */
    defined("LIBRARY_PATH")
        or define("LIBRARY_PATH", realpath(dirname(__FILE__) . '/library'));
    /* Error reporting. */
    ini_set("error_reporting", "true");
    error_reporting(E_ALL|E_STRCT);
 ?>

我的帐户登录.php

<?PHP
        $selected_db_users = 'true';
        include('../library/connection.php');
    //rest of the code

connection.php

<?php
ob_start();
include('../config.php');
if ($selected_db_text == 'true'){
    $dbname = $cfgrange[0][0][0];
    $username = $cfgrange[0][0][1];
    $password = $cfgrange[0][0][2];
    $host = $cfgrange[0][0][3]; 
} elseif($selected_db_images == 'true'){
    $dbname = $cfgrange[0][1][0];
    $username = $cfgrange[0][1][1];
    $password = $cfgrange[0][1][2];
    $host = $cfgrange[0][1][3]; 
} elseif($selected_db_users == 'true'){
    $dbname = $cfgrange[0][2][0];
    $username = $cfgrange[0][2][1];
    $password = $cfgrange[0][2][2];
    $host = $cfgrange[0][2][3]; 
}
if(!isset($_SESSION)){
    session_start();
}
$username = ""; 
$password = ""; 
$host = ""; 
$dbname = ""; 
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); 
try{
    $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options); 
} 
catch(PDOException $ex){
    die("Failed to connect to the database: " . $ex->getMessage()); 
}
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 
if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()){ 
    function undo_magic_quotes_gpc(&$array){
        foreach($array as &$value)
        {
            if(is_array($value)){
                undo_magic_quotes_gpc($value); 
            }else{ 
                $value = stripslashes($value); 
            } 
        }
    }
    undo_magic_quotes_gpc($_POST); 
    undo_magic_quotes_gpc($_GET); 
    undo_magic_quotes_gpc($_COOKIE); 
    echo 'ok';
}
$selected_db_text = 'false';
$selected_db_images = 'false';
$selected_db_users = 'false';

您可以创建一个新的数组作为

$db_credentials = $cfgrang['db_range']['db_texts'][];

然后您可以通过$db_credentials ['dbname'], $db_credentials['username']; 轻松获取用户名、数据库名等

如果您想作为访问您的阵列

$cfgrange[0][0][0];

以及

$cfgrange["db_range"]["db_texts"]["dbname"];

则您的数组应声明为

$cfgrange = array(
"0" => array(
        "0" => array(
            "0" => "DBNAME",
            "1" => "",
            "2" => "",
            "3" => ""
        )),
        "db_range" => array(
        "db_texts" => array(
    "dbname" => "DBNAME",
    "username" => "",
    "password" => "",
    "host" => ""
     )),
   );

现在您可以根据需要访问

echo $cfgrange["db_range"]["db_texts"]["dbname"];
echo "<BR>".$cfgrange[0][0][0];