1


0

私はファイルアップロードサイトを持っています、それはURLを通してアップロードするオプションを持っています、私がしようとしていることはユーザーがURLを通してアップロードする時はいつでもです、私は直接ダウンロードURLを表示する同じURLを通してアップロードされたファイルが存在するか再度アップロードするのではなく

アップロードスクリプトに送信されるデータは、次のような配列形式です。

配列(
[0]
=> http://i41.tinypic.com/3342r93.jpg
[1]
=> http://i41.tinypic.com/28cfub7.jpg
[2]
=> http://i41.tinypic.com/12dsa32.jpg)

そして結果を出力するために使用される配列は次のような形式です。

Array([0] => Array([id] => 43 [名前] => 3342r93.jpg [サイズ] => 362750 [descr] => [パスワード] => [delete_id] => 75CE [upload_id] => 75F45CAE1)

[1] => Array([id] => 44 [名前] => 28cfub7.jpg [サイズ] => 105544 [descr] => [パスワード] => [delete_id] => D392 [upload_id] => 6676FD881)

[2] => Array([id] => 45 [名前] => 12dsa32.jpg [サイズ] => 49000 [説明] => [パスワード] => [delete_id] => 54C9 [upload_id] => A58614C01)

)

リンクhttp://i41.tinypic.com/28cfub7.jpgがすでにアップロードされている場合は、出力配列に追加しますが、順序を維持するようにします(追加されたリンクが配列の2番目の場合、出力結果は元に戻ります)。 2番目にも表示する

そのため、入力配列から一致したURLを削除するために使用する関数と、出力配列を順序なしで追加するための関数を使用します。

  • //編集済み*

設定されていなくても構いませんが、順序を維持したいのですが。

たとえば、配列を設定解除した後は、次のようになります。

配列([0] => http://i41.tinypic.com/3342r93.jpg // [1]が削除されました[2] => http://i41.tinypic.com/12dsa32.jpg)

しかし、出力配列は

Array([0] => Array([id] => 43 [名前] => 3342r93.jpg [サイズ] => 362750 [詳細] => [パスワード] => [delete_id] => 75CE [upload_id] => 75F45CAE1)

// this will become [1], so how can i add another output[1] and shift other
// items after it to [2], [3] and so on...
[1] => Array([id] => 45 [名前] => 12dsa32.jpg [サイズ] => 49000 [descr] => [パスワード] => [delete_id] => 54C9 [upload_id] => A58614C01)

)

3 Answer


1


まあ、次のようにしてそれを出力配列に追加できます。

$ OutArray [2] = $ element;

$ elementはid、name、size(etc …​)要素を持つ別の配列です。

配列から削除することに関して:

設定解除($ OutArray [2]);
http://php.net/manual/en/language.types.array.php[Array(PHP manual)]を読んでください。


0


インデックス付き配列がある場合は、次のようにして値を削除できます。

設定解除($ array [2]);

項目を配列に追加したい場合は、この array_pushの省略形を使用してください(インデックスを指定する必要はありません)。

$ array [] = "new object";

すべてのドキュメントは php.net/arraysにあります。


0


なぜifステートメントや `+ file_exists()+`を使用してファイルが存在するかを確認しないのですか。 もしあなたがすでに値を持つ配列を持っているならば、それは二度とアップロードされないでしょう。