Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 尝试打印多维数组中的值以形成预设值_Php_Mysql_Templates_Controller - Fatal编程技术网

Php 尝试打印多维数组中的值以形成预设值

Php 尝试打印多维数组中的值以形成预设值,php,mysql,templates,controller,Php,Mysql,Templates,Controller,我目前正在从事一个项目,我目前的目标是在最终的结帐表单输入上打印关于特定用户的信息 首先,我通过公共功能收集特定用户的信息: public function getUserAddress($dbh) { $sql = "SELECT street, zip, city FROM address WHERE user_id=:user"; $stmt = $dbh->prepare($sql); $stmt->bindParam(':user', $this-&

我目前正在从事一个项目,我目前的目标是在最终的结帐表单输入上打印关于特定用户的信息

首先,我通过公共功能收集特定用户的信息:

public function getUserAddress($dbh)
{
    $sql = "SELECT street, zip, city FROM address WHERE user_id=:user";
    $stmt = $dbh->prepare($sql);
    $stmt->bindParam(':user', $this->uid);
    $stmt->execute();
    $userAddress = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $this->userAddress = $userAddress;
    return $this->userAddress;
}
然后我将信息存储在一个名为$userAddress的变量中

$userAddress = $user->getUserAddress($dbh);
由于用户有两个地址,都带有“Street”、“City”和“Zip”,所以我将这两个数组都存储在$templateData中。通过这种方式,我可以指定应该在哪个输入标记中打印出什么索引,而不必为每个插槽创建新函数

$templateData['user']['address'] = $userAdress['street']." ".$userAddress['city']." ".$userAddress['zip'];
然而,打印出来似乎几乎是不可能的。当我倒垃圾的时候 $templateData['user']['address'] 我似乎只得到了2个空字符串,其他什么都没有

这只是我的Checkout.controller中的代码,但不知何故,这些信息似乎没有在我的模板页面中找到。所有路线和包括都是正确的,因此dw对此表示怀疑

我对这一切都很陌生,所以我非常感谢能得到的任何帮助

信息应如何呈现的图像

因此在本例中:“Postort”=“City”&“GatuaAddress”=“Street”

将返回一个关联数组数组;因此,要访问各个元素,您需要以下内容:

 $userAdress[0]['street']." ".$userAddress[0]['city']." ".$userAddress[0]['zip']

我总是可以具体地定义每一个,尽管这似乎有些牵强。大概是这样的:

 $templateData['user']['address'][0]['street'] = $userAddress[0]['street'];
 $templateData['user']['address'][0]['city'] = $userAddress[0]['city'];
 $templateData['user']['address'][0]['zip'] = $userAddress[0]['zip'];

 $templateData['user']['address'][1]['street'] = $userAddress[1]['street'];
 $templateData['user']['address'][1]['city'] = $userAddress[1]['city'];
 $templateData['user']['address'][1]['zip'] = $userAddress[1]['zip'];

我基本上是在寻找另一个不需要太多重复的解决方案。

是的,我试过这样做。甚至添加了另一个地址,因为我将地址分为“主”地址和“次”地址。一行,与您编写的一行相同,每行上都有[1]而不是[0]。虽然当我将其全部转储出来时,整个地址(包括Street、Zip和City)都在一个字符串中,而且由于我想将它们分开,所以更难。对于您给出的代码,这绝对是访问值的正确方法。我不知道你说它们都在一条线上是什么意思?这就是代码的作用。。。也许你可以编辑你的文章,更详细地了解你想要的输出是什么?是的,我已经编辑了我的文章,并添加了一幅关于我希望信息如何呈现的图片。显然,我的代码中存在som问题,这使得我无法在多个输入之间拆分值。你会怎么做呢?看起来你可能想要像
foreach($userAddress作为$address)$templateData['user']['address'][]=$address
然后当您将数据输出到您将使用的表单中时(例如用于Postort)
echo$templateData['user']['address'][0]['city']。我担心,如果看不到更多的代码,就很难提供更多的建议……您可以用
foreach($userAddress as$address)$templateData['user']['address'][=$address