2个函数之间的PHP数组

时间:2015-03-15 09:32:18

标签: php arrays json function

我使用了教程中的现有代码,需要对其进行更改。 原始代码不使用数组,但我需要它。

在我index.php我正在使用标记调用该函数:

else if ($tag == 'getinvbykost') {
        $kstalt = $_POST['kstalt'];
        $get = $db->GetInvByKost($kstalt);
        if ($get != false) {
        // echo json with success = 1
        $response["success"] = 1;
        $response["ean"] = $get["ean"];
        $response["name"] = $get["name"];
        $response["betriebsdatenalt"] = $get["betriebsdatenalt"];
            echo json_encode($response);
        } else {
            // user not found
            // echo json with error = 1
            $response["error"] = 1;
            $response["error_msg"] = "nicht erfolgreich";
            echo json_encode($response);
        }
    }

函数GetInvByKost($kstalt);DB_Functions.php中定义。

部分是:

public function GetInvByKost($kstalt) {
        $result = mysql_query("SELECT ean, name, betriebsdatenalt FROM geraete WHERE kstalt='$kstalt' AND accepted='0'") or die(mysql_error());
        // check for result 
        $no_of_rows = mysql_num_rows($result);
        if ($no_of_rows > 0) {
        while ($result = mysql_fetch_assoc($result)){
        }
        return $result;
        //echo $result[1];
        }
        else {
            // user not found;
            return false;
        }
    }

问题是,函数GetInvByKost返回一个数组。 index.php中的部分

$response["success"] = 1;
$response["ean"] = $get["ean"];
$response["name"] = $get["name"];
$response["betriebsdatenalt"] = $get["betriebsdatenalt"];

不是针对一个数组,只针对一行。 我如何获取数组中的值来构建我的输出?

1 个答案:

答案 0 :(得分:0)

mysql_fetch_assoc($result)会返回 flat 数组。这意味着您无法通过密钥访问返回的数组。因此$get["ean"]是错误的,$get[1]是正确的。您只能通过索引访问mysql_fetch_assoc($result)的结果,而不是密钥。您的查询中有SELECT ean, name, betriebsdatenalt...,因此索引“ean”等于0,“name”等于1,依此类推。因此,应以这种方式更改代码的3个部分:

 `$get["ean"]` => ` $get[0]`
 `$get["name"]` => `$get[1]`
 `$get["betriebsdatenalt"]` => `$get[2]`

<强>更新 因此,index.php文件应该是这样的:

else if ($tag == 'getinvbykost') {
    $response = array();
    $kstalt = $_POST['kstalt'];
    $get = $db->GetInvByKost($kstalt);
    if ($get != false) {
    // echo json with success = 1
    $response["success"] = 1;
    $response["ean"] = $get[0];
    $response["name"] = $get[1];
    $response["betriebsdatenalt"] = $get[2];
        echo json_encode($response);
    } else {
        // user not found
        // echo json with error = 1
        $response["error"] = 1;
        $response["error_msg"] = "nicht erfolgreich";
        echo json_encode($response);
    }
}