Php 如何循环assoc数组值并将数据放入函数中
我构建了一个查询,从中获得了一个assoc数组。但我怎样才能循环通过它们呢。这就是我所拥有的 我的SQL查询:Php 如何循环assoc数组值并将数据放入函数中,php,mysql,arrays,loops,foreach,Php,Mysql,Arrays,Loops,Foreach,我构建了一个查询,从中获得了一个assoc数组。但我怎样才能循环通过它们呢。这就是我所拥有的 我的SQL查询: public static function album_display() { global $database; $sql = "SELECT a.*, "; $sql .= "(SELECT photographs.filename "; $sql .= "FROM photographs "; $
public static function album_display() {
global $database;
$sql = "SELECT a.*, ";
$sql .= "(SELECT photographs.filename ";
$sql .= "FROM photographs ";
$sql .= "WHERE photographs.albumid = a.name ";
$sql .= "ORDER BY photographs.creation_date ASC ";
$sql .= "LIMIT 1) ";
$sql .= "AS filename FROM album a ";
$result_set = $database->query($sql);
while($rows = mysqli_fetch_assoc($result_set)){
foreach($rows as $row) {
print_r($row);
}
}
}
如果在$row上使用print_r(),则输出为:
15Jaap1Jaap1.JPG16Jaap2Jaap4.JPG17Jaap3Jaap7.JPG18Jaap4Jaap12.JPG19Jaap5
我想循环遍历Jaap1、Jaap2、Jaap3、JAAP4,并将它们放在函数album_path($albumid,$filename)中的$albumid中。我想对JPG文件做同样的处理。此函数位于Class()相册中。功能album_display()也是如此
如果调用函数album_path($albumid,$filename),则需要输出完整的相册/图像路径,并将这些路径回显到屏幕上。并显示图像
public function album_path($albumid, $filename) {
return $this->upload_dir.DS.$albumid.DS.$filename;
}
我如何使用foreach进行此操作。或者还有其他更好的方法吗
亲切问候,,
Coos Wolff将
选择a.*
更改为选择a.albumid
。这应该只返回来自第二条SELECT
语句的唱片集id和文件名。可能是这样的吗?您可以将sql拆分为引号内的多行,这样更易于读取,并且还可以为每个表使用别名,这同样使其更易于读取和写入
$my_array = [];
public static function album_display() {
global $database;
$sql = "SELECT a.*, ";
$sql .= "(SELECT photographs.filename ";
$sql .= "FROM photographs ";
$sql .= "WHERE photographs.albumid = a.name ";
$sql .= "ORDER BY photographs.creation_date ASC ";
$sql .= "LIMIT 1) ";
$sql .= "AS filename FROM album a ";
$result_set = $database->query($sql);
while($rows = mysqli_fetch_assoc($result_set)){
foreach($rows as $row) {
$my_array['albumid'][] = $row->albumid;
$my_array['filename'][] = $row->filename;
}
}
}
foreach ($my_array['albumid'] as $albumid) {
echo $albumid;
}
foreach ($my_array['filepath'] as $filepath) {
echo $filepath;
}
album_path($my_array['albumid'], $my_array['filepath']);
<?php
public static function album_display() {
global $database;
$sql = "SELECT a.*,
( SELECT p.`filename`
FROM `photographs` p
WHERE p`.`albumid` = a.name
ORDER BY p.`creation_date` ASC
LIMIT 1
) AS 'filename' FROM `album` a ";
$result_set = $database->query( $sql );
/* using object notation rather than array for ease */
while( $rows = mysqli_fetch_object( $result_set ) ){
$this->album_path( $rows->albumid, $rows->filename );
}
}
?>
mysqli\u fetch\u assoc
从查询生成的结果集中一次返回一行
每个$row
都是一个关联数组,如果您更仔细地查看var\u dump()
的输出,您将看到该数组是一组键值对
while($rows = mysqli_fetch_assoc($result_set)){
//echo $row['id'];
//echo $row['filename'];
//echo $row['albumid'];
// just to be sure add this line
// so we know exactly whats in $row
print_r($row);
}
很抱歉,因为您对其他字段使用了SELECT*
,我不知道如何调用数组元素。我希望您能了解基本的想法。您能将var_dump的原始输出添加到您的问题中,而无需自己进行任何编辑吗please@RiggsFolly如果我将var_dump($row)放在我的公共静态函数album_display()中而不是echo$row中,原始输出是:string(2)“15”string(5)“Jaap1”string(9)“Jaap1.JPG”string(2)“16”string(5)“Jaap2”string(9)“Jaap4.JPG”string(2)“17”string(5)“Jaap3”string(9)“Jaap7.JPG”string(2)“18”string(5)“Jaap4”string(10)“Jaap12.JPG”现在显示:致命错误:在C:\xampp\htdocs\jaaplangelaar\includes\album.php第86行的对象上下文中不使用$this。所以我改变了$this->album\u路径($rows->albumid,$rows->filename);到相册::相册路径($rows->albumid,$rows->filename);现在它返回:注意:未定义的属性:stdClass::$albumid,位于第86行的C:\xampp\htdocs\jaaplangelaar\includes\album.php中。所以它是循环的,但是$albumid是空的。我理解这个想法。现在,我正在尝试将albumid行和filename行(其中四个)放入我的album_path函数中。我尝试了很多方法,在谷歌上搜索了很多。我就是不能让它工作,真的不清楚你下一步到底想发生什么。就像你说的,你的函数取2个标量参数。添加了一条建议,这次不要编辑打印($row)
的输出,只需将其作为附加信息添加到您的问题编辑问题,不要将其作为注释这会输出我需要的值。但是我如何检索要放入album_path()函数的值(albumid和文件名,存在四次)?它有两个参数$albumid(Jaap1、Jaap2、Jaap3、Jaap4)和$filename(Jaap1.JPG、Jaap4.JPG、Jaap7.JPG、Jaap12.JPG)。感谢所有帮助我解答这些问题的人,我终于让它工作起来了。我真的很感激你的努力!