2012-04-16 14 views
2

内の項目を「eachingため」、それが動作します:というのforeach()ではない、私はこれを行う場合は、配列PHP

$data_array2 = mysql_query("SELECT pic_loc FROM pictures WHERE user_id = '".$id."'"); 
$cell_pictures = mysql_fetch_array($data_array2); 
foreach($cell_pictures as $pics_being_deleted) 
{ 
unlink($pics_being_deleted); 
} 

問題は、上記のコードは、それが毎回それのための新しいMySQLクエリを実行意味でネストされていることですリンク解除機能を実行するので、私はそれはそれをしないにするために以下のコードを作っ:

$the_pics_raw_2 = array(); 
$data_array2 = mysql_query("SELECT pic_loc FROM pictures WHERE user_id = '".$id."'"); 
while($cell_pictures = mysql_fetch_array($data_array2)) 
{ 
$the_pics_raw = $cell_pictures['pic_loc']; 
$the_pics_raw_2[] = $the_pics_raw; 
} 

$the_pics_raw_3 .= " \"../../". implode("\" , \"../../" ,$the_pics_raw_2)."\""; 
$the_pics = array($the_pics_raw_3); 

foreach($the_pics as $pics_being_deleted) 
{ 
unlink($pics_being_deleted); 
} 

私はお返しにこのエラーが表示されます。

Warning: unlink("../../users/biondizzle/photos/pic_3387677.png" , "../../users/biondizzle/photos/pic_1581185.png") [function.unlink]: No such file or directory 

foreach()は "foreaching"ではないので、それは明らかに"../../users/biondizzle/photos/pic_3387677.png" , "../../users/biondizzle/photos/pic_1581185.png"ディレクトリを見つけることはないでしょう。

unlink()を別々に実行する方法は、配列にリストされているディレクトリごとに、implode()でカンマと引用符を追加して動作させると思いますか? おかげでたくさんは、私はそれが十分 -Mike

+1

我々がループしている正確に何を見ることができるようにあなたは、foreachループの前に$ the_pics上のvar_dumpを行うことができますか? –

+1

'$ the_pics_raw = $ cell_pictures ['pic_loc'];を' $ the_pics_raw = '../../'.$ cell_pictures [' pic_loc ']; 'に変更する' $ the_pics_raw_2 [] = $ the_pics_raw; ' $ the_pics_raw_3。= "\" ../../ "。implode(" \ "、\" ../../ "、$ the_pics_raw_2)を削除します。 \ ""; $ the_pics = array($ the_pics_raw_3); 'あなたのコードはうまくいくはずです。 – DaveRandom

+0

VAR DUMP:array(1){[0] =>文字列(98) "" ../../users/biondizzle/photos/pic_3387677.png "、" ../../users/biondizzle/photos/ pic_1581185.png ""} – user1053263

答えて

1

私は、これはあなたが何をしたいかだと思う説明願っています:

while($cell_pictures = mysql_fetch_array($data_array2)) { 
    $the_pics_raw = $cell_pictures['pic_loc']; 
    $the_pics[] = "../../" . $the_pics_raw; 
} 

foreach($the_pics as $pics_being_deleted) { 
    unlink($pics_being_deleted); 
} 

それは配列を変換されたとして、あなたは、私が$the_pics_raw_3 .= " \"../../". implode("\" , \"../../" ,$the_pics_raw_2)."\"";行を削除した気づくでしょう文字列に変換すると、その後foreachには不可能になりました。

+1

その全体に注意してください。 "../../" ' - ' '../../ ''でなければなりません。 – DaveRandom

+1

Heh、ちょうど私が入力しているように気付いた – Treffynnon

+0

オハイオ州それは意味がある、私はそれを得る、ありがとう、これは素晴らしい仕事!それは私が6分間の答えを受け入れることはできません – user1053263

0

使用このコード:

$the_pics_raw = array(); 
$data_array2 = mysql_query("SELECT pic_loc FROM pictures WHERE user_id = '".$id."'"); 
while($cell_pictures = mysql_fetch_array($data_array2)) 
{ 
array_push($the_pics_raw,"../../".$cell_pictures['pic_loc']); 
} 

foreach($the_pics as $the_pics_raw) 
{ 
unlink($pics_being_deleted); 
} 
関連する問題