Манипулирование массивами в php - PullRequest
1 голос
/ 26 июня 2009

У меня есть сайт для загрузки файлов, у него есть возможность загрузки через URL-адреса, я пытаюсь сделать это, когда пользователь загружает через URL-адрес, я проверяю свою базу данных, если существует файл, который был загружен через тот же URL-адрес, на котором отображается загрузите URL-адрес напрямую, а не загружайте его снова.

Данные, отправляемые в сценарий загрузки, имеют вид массива, например:

Array ( 
[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
            [name] => 3342r93.jpg
            [size] => 362750
            [descr] => 
            [password] => 
            [delete_id] => 75CE
            [upload_id] => 75F45CAE1
        )

    [1] => Array
        (
            [id] => 44
            [name] => 28cfub7.jpg
            [size] => 105544
            [descr] => 
            [password] => 
            [delete_id] => D392
            [upload_id] => 6676FD881
        )

    [2] => Array
        (
            [id] => 45
            [name] => 12dsa32.jpg
            [size] => 49000
            [descr] => 
            [password] => 
            [delete_id] => 54C9
            [upload_id] => A58614C01
        )

)

Теперь я хочу, чтобы, если ссылка http://i41.tinypic.com/28cfub7.jpg уже была загружена, я просто добавляю ее в выходной массив, но сохраняю ее в порядке (если добавленная ссылка была второй в массиве, результат вывода также должен отображаться в 2-й)

Так, какую функцию следует использовать для удаления совпавших URL-адресов из входного массива и функции для добавления его в выходной массив в порядке №

// отредактировано

Да, unset сделает это, но я хочу сохранить порядок:

Например, после сброса массива выглядит так:

 Array ( 
    [0] => http://i41.tinypic.com/3342r93.jpg 
    // [1] was removed
    [2] => http://i41.tinypic.com/12dsa32.jpg 
    )

но выходной массив будет

    Array
    (
        [0] => Array
            (
                [id] => 43
                [name] => 3342r93.jpg
                [size] => 362750
                [descr] => 
                [password] => 
                [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
                [name] => 12dsa32.jpg
                [size] => 49000
                [descr] => 
                [password] => 
                [delete_id] => 54C9
                [upload_id] => A58614C01
            )

    )

Ответы [ 3 ]

1 голос
/ 26 июня 2009

Ну, вы можете добавить его в выходной массив, выполнив что-то вроде:

$OutArray[2] = $element;

Где $ element - это другой массив с элементами id, name, size (и т. Д.).

Что касается удаления из массива:

unset($OutArray[2]);

Возможно, вы захотите прочитать Array (руководство по PHP) .

0 голосов
/ 26 июня 2009

Почему бы не использовать оператор if и / или file_exists(), чтобы проверить, существует ли файл. Если у вас уже есть массив со значениями, он просто не будет загружен снова.

0 голосов
/ 26 июня 2009

Если у вас есть индексированный массив, вы можете удалить значение, выполнив:

unset ($array[2]); 

Если вы хотите добавить элемент в массив, используйте это сокращение array_push (вам не нужно указывать индекс!):

$array[] = "new object"; 

Вся документация находится на php.net / массивах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...