2015-05-16 37 views
0

我想將數組項分配到數組中。 這是我的代碼;如何從數組中創建一個變量

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

+1

你想要做什麼以及遇到什麼問題?如果你可以更清楚一點,這將有所幫助。 – NaijaProgrammer

+0

@ NaijaProgrammer感謝您提醒我更新了我的問題。我的目標是從foreach獲取所有結果,並將它們分配到一個變量中,然後再使用該變量。 – orko

回答

0

可以調試變量內容用的var_dump或回報:

var_dump($var); // Automatic echo 
print_r($var); // Automatic echo 
print_r($var, true); // Return 

您可以通過用foreach可變迭代。

+0

除了所有這些評論和提示之外,還有哪些答案? – Rizier123

+0

非常感謝你的回答,但這不是我所期待的。我想從foreach中獲取所有結果並將其用於變量。雖然'var_dump($ var);'也只在我的情況下打印一個結果。 – orko

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]; 
} 
+0

非常感謝您的幫助和解答。我的目標是簡單地將foreach循環分配給一個變量。 我已經嘗試了您的建議,但它帶來了數組作爲結果。 – orko

相關問題