我正在尝试将数组项分配到数组中。 这是我的代码;
$sqlText['attach']="SELECT attachments.disk_directory,
attachments.disk_filename,
attachments.digest,
attachments.filename
FROM attachments
WHERE container_id = $myPage
GROUP BY digest";
$sqlQuery_MainMenu = mysql_db_query($db, $sqlText['attach'], $connection) or die("DB CON ERROR");
$directories=array();
$files=array();
$file_names=array();
while($mm_Content=mysql_fetch_array($sqlQuery_MainMenu)){
$directories[]=$mm_Content[disk_directory];
$files[]=$mm_Content[disk_filename];
$file_names[]=$mm_Content[filename];
}
foreach($directories as $index => $directory){
$attachment = $directory.'/'.$files[$index].'<pre>';
}
foreach($file_names as $file_name){
$file_name.'<pre>';
}
我的目标是从foreach获取所有结果并将它们分配到变量中并稍后使用该变量。
我只做了一个来自数组的项目。我试过php提取和其他一些东西,但都没有用。 我只想将foreach循环分配给变量 非常感谢您的建议。
foreach($directories as $index => $directory){
echo $directory.'/'.$files[$index].'<pre>';
}
例如,返回5个结果;
/documents/directory/filename.jpg
/documents/directory/filename1.jpg
/documents/directory5/somename.jpg
我只想从foreach循环中获取此结果并将它们分配到变量中。当我使用这个新变量时,我希望它具有高于示例的值。
我想将此附件发送到PHPMailer附件 让我们说有两个变量文件和名称,它们来自foreach循环。 在PHPMailer上;
$mail->addAttachment($files, $names);
如果这不起作用,我将把我的代码更改为;
foreach($directories as $index => $directory){
$attachment = .'/'.$files[$index].'<pre>';
'$mail->addAttachment('.$attachment')';
}
忘了file_names。
答案 0 :(得分:0)
您可以使用var_dump调试变量内容或返回:
var_dump($var); // Automatic echo
print_r($var); // Automatic echo
print_r($var, true); // Return
您可以使用foreach迭代变量。
答案 1 :(得分:0)
我可能不完全明白你要做什么,但我在你的代码中发现了一两件事。首先,在while
循环中,您$mm_Content
数组成员应该在它们周围加引号。目前,您拥有的是:
while($mm_Content=mysql_fetch_array($sqlQuery_MainMenu))
{
$directories[]=$mm_Content[disk_directory];
$files[]=$mm_Content[disk_filename];
$file_names[]=$mm_Content[filename];
}
你可以这样重写:
while($mm_Content=mysql_fetch_array($sqlQuery_MainMenu))
{
$directories[]=$mm_Content["disk_directory"];
$files[]=$mm_Content["disk_filename"];
$file_names[]=$mm_Content["filename"];
}
话虽如此,你的foreach循环并没有回显你想要的东西,因为在每次后续迭代中,你用新的变量覆盖$attachment
变量中的先前值。为了使它能够保存循环中的每个值,您必须考虑如何为$directories
变量执行此操作:将其声明为数组并将每个后续循环值分配给新的数组元素。应用此原则,您的代码应如下所示:
$attachments = array(); //create and initialise the attachments array
$counter = 0; //create and initialise a counter variable
foreach($directories as $index => $directory)
{
$attachment[$counter] = $directory.'/'.$files[$index];
}
foreach($file_names as $file_name)
{
$attachment[$counter] .= '<pre>'. $file_name.'</pre>';
++$counter; //increment the counter variable
}
然后,要打印出值,你可以这样做:
foreach($attachments AS $attachment)
{
echo $attachment;
}
或者,使用for
循环:
for($i = 0; $i < count($attachments) $i++)
{
echo $attachments[$i];
}