2012-05-04 3 views
0

У меня есть форму Где пользователи Загружают Изображения и вводят название для них, а затем отправьте. Чтобы выполнить это, я интегрирую AJAXUPLOADER, он не позволяет одновременно загружать несколько изображений, но один за другим, у меня нет проблем с ним.JS/PHP Array Merge

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

в основном, я хотел бы иметь массив с несколькими именами файлов и названием, так что я положил этот код:

input type="text" name="images[][title]" input type="hidden" value="'+response+'" name="images[][url]" 

Он отлично работает, но есть проблема. структура массива строится с указанным кодом:

[images] => Array 
    (
     [0] => Array 
      (
       [title] => Ferrari 
      ) 

     [1] => Array 
      (
       [url] => d2339e1d8da95e811c4344eaef226d09.jpg 
      ) 

     [2] => Array 
      (
       [title] => Ferrari 
      ) 

     [3] => Array 
      (
       [url] => 714208a8c1b819a548a258c33e311e98.jpg 
      ) 

    ) 

Однако, я хочу, чтобы они в этом формате:

[images] => Array 
    (
     [0] => Array 
      (
       [title] => Ferrari, 
       [url] => d2339e1d8da95e811c4344eaef226d09.jpg 
      ) 

     [1] => Array 
      (
       [title] => Ferrari, 
       [url] => 714208a8c1b819a548a258c33e311e98.jpg 
      ) 

    ) 

Любая быстрая помощь будет оценен по достоинству!

ответ

0

Назовите его titles[], а затем объедините их в PHP.

Пример:

<?php 
header("Content-type: text/plain"); //Display only 
$urls = array(
    "http://example.com/", 
    "http://example.com/images/" 
); 
$titles = array(
    "Example", 
    "Example Images" 
); 
$images = array(); 
foreach ($urls as $key => $value) { 
    $images[$key]["url"] = $value; 
    $images[$key]["title"] = $titles[$key]; 
} 

print_r($images); 
+0

Да, однако, для кода вам нужны некоторые исправления, но это правильный подход! – mahaidery

+0

Я никогда не хотел этого делать, но я не вижу других вариантов :) – mahaidery

+0

Мой код работает на нем (я его протестировал). Возможно, вам придется настроить его в соответствии с вашим вводом. Но да. Как вы планировали это сделать? –

3

Объявив индексов в вашем входе, этот массив автоматически будет построен правильно для вас, нет необходимости делать какие-либо фантазии массив слияния.

<input type="text" name="images[0][title]" /> 
<input type="hidden" value="'+response+'" name="images[0][url]" /> 

<input type="text" name="images[1][title]" /> 
<input type="hidden" value="'+response+'" name="images[1][url]" /> 

Итак, и т. Д. :) Если вы используете петлю PHP для объявления своих входов, это так просто.

<? for($i = 0; $i < 2; $i++) { ?> 
<input type="text" name="images[<?= $i ?>][title]" /> 
<input type="hidden" value="'+response+'" name="images[<?= $i ?>][url]" /> 
< } ?> 

Надеюсь, это поможет сделать вашу жизнь проще!

+0

Nopes, это неправильный подход! – mahaidery

+0

например: загрузить файл с массивом с изображениями [0] [title] images [0] [url] будет вставлен в форму, а затем он будет загружен еще больше, каждый раз, когда счетчик будет равен 0. – mahaidery

+0

Это цель цикла ... Вы каждый раз меняете ключ для каждого набора изображений. Если вы вынудите значение индекса, вы можете зависеть от этого значения, отправляемого вместе с запросом. Используя [] в качестве ключа, вы будете наращивать значения независимо, в соответствии с вашей первоначальной проблемой. Пожалуйста, верьте, что реализация, которую я предоставил, действительно решает проблему, и она была протестирована и подтверждена, что она работает. – Bryan