Trying to pass id to the ajax callback function, keeps overwriting, how to solve this? I created a form which have a lot of images and a delete button on every each one of them. I used ajax to create a callback function which would delete the image. Here is part of my form:

foreach($result as $key=&gt;$some){
    $form['image-entry'][$some-&gt;id] = array(
      '#type' =&gt; 'fieldset'
    );

    $form['image-entry'][$some-&gt;id]['image_' . $some-&gt;id] = array(
      '#markup' =&gt; theme('image', $variables[$key]),
    );

    $form['image-entry'][$some-&gt;id]['description_' . $some-&gt;id] = array(
      '#type' =&gt; 'textarea',
      '#default_value' =&gt; $some-&gt;description,
      '#attributes' =&gt; array(
        'placeholder' =&gt; t('Describe this picture'),
       ),
    );
    $form['image-entry'][$some-&gt;id]['submit3' . $some-&gt;id] = array(
      '#type' =&gt; 'submit',
      '#value' =&gt; 'Delete',
      '#ajax' =&gt; array(
        'callback' =&gt; 'image_gallery_delete_photo_callback',
       ),
    );
   $form['#foo'] = array($some-&gt;id);
  }


As you can see I have 3rd submit button which is ajax callback and from example I found out that I need to create a new form element (foo) in this case, which stores some data that I can pass. Everything works like a charm, this is my callback function:

function image_gallery_delete_photo_callback($form, $form_state, $args){
  $arguments = $form['#foo'];
  dpm($arguments);

  /*$photo_delete = db_delete('image_gallery_photos')
                  -&gt;condition('id', $arguments)
                  -&gt;execute();*/
}


I am able to fetch the id of the photo from the form, but here I face a brick wall. 

Problem: id is overwritten because it is in a foreach loop, taking it out, doesn't help. It only stores last value from the loop.

How can I get an id of the element selected?
I'm sure you can pass some arguments to your callback by doing this:

$form['image-entry'][$some-&gt;id]['submit3' . $some-&gt;id] = array(
  '#type' =&gt; 'submit',
  '#value' =&gt; 'Delete',
  '#ajax' =&gt; array(
    'callback' =&gt; 'image_gallery_delete_photo_callback',
    'parameters'=&gt; array('param1'=&gt;$some-&gt;id)
   ),
);


Try to catch those parameters at your function image_gallery_delete_photo_callback($form, $form_state, $args)

The variable $args should contain 'param1'as your ID

Hope it helps !