如何从数组中创建变量

时间:2015-05-16 22:29:53

标签: php mysql arrays

我正在尝试将数组项分配到数组中。 这是我的代码;

$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。

2 个答案:

答案 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];
}