0

チェックボックス付きのhtmlフォームがあります。誰かが1つ以上のチェックボックスを選択し、削除ボタンを押すと、データベースからファイル参照が削除され、AmazonS3からファイルが削除されます。これは、すべてのチェックボックスを見つけるために使用したコードです

$checkbox_select = JRequest::getVar('checkboxselect', '', 'POST'); //just a Joomla way of doing a $_POST with extra security
var_dump($checkbox_select); //this returns: array(2) { ["video_1.mp4"]=> string(2) "on" ["video_2.mp4"]=> string(2) "on" ["video_3.mp4"]=> string(2) "on"} 

// Localize and sanitize each individual value
foreach (array_keys($checkbox_select) as $element) {
    $deleteNames[] = $db->quote($element);
}
var_dump($deleteNames); //array(3) { [0]=> string(13) "'video_3.mp4'" [1]=> string(13) "'video_2.mp4'" [2]=> string(13) "'video_1.mp4'" }

私の問題は、AmazonS3と複数のファイルの削除にあります。S3の削除を入れる必要のある形式は、かなり紛らわしいです。

$s3->delete_objects('mybucket', array(

'objects' => array( // accepts a *list* of one or more *hashes*

    // a *hash* that contains a "key" key with a value, and maybe a "version_id" key with a value
    array('key' => 'object (file) name'),

    // a second hash representing a file
    // a third hash representing a file
    // and so on...
),
));

私が理解している限り(S3 delete_objects関数から)、最終的な連想配列はkey実際のキー値として持っています。最後var_dumpに、すべてのビデオ名を配列に入れました。今は、その配列を次の形式の配列の束に変換する必要があります。

array ('key' => 'video_1.mp4'),
array ('key' => 'video_2.mp4'),
array ('key' => 'video_3.mp4'),
...and so on

これらのアレイを作成するにはどうすればよいですか?私が持っている最初のvar_dumpを使用するべきですか、それとも2番目のものを使用するべきですか(両方ともビデオファイル名がリストされています)?前もって感謝します。

4

2 に答える 2

0

array_push()のphpドキュメントでこの投稿をご覧ください。あなたはそれを達成する方法の簡単なアイデアを得るでしょう。

于 2012-04-28T21:29:49.270 に答える
0

foreachを使用して配列をループし、目的の形式で新しい配列を作成できます。

例:

<?php

foreach (array_keys($checkbox_select) as $element) {
    $deleteNames[] = array('key' => $db->quote($element));
}

テストされていません。エラーが含まれている可能性があります

于 2012-04-28T21:31:19.983 に答える