通过php中的其他数组的数组

I have a question for you, I need to through an array with other arrays in php but i through only the last array, my array is:

Array
(
[0] => Array
    (
        [syn_id] => 17070
        [syn_label] => fd+dfd
    )
[1] => Array
    (
        [syn_id] => 17068
        [syn_label] => fds+dsfds
    )
[2] => Array
    (
        [syn_id] => 17069
        [syn_label] => klk+stw
    )
 )

My php:

       $a_ddata = json_decode(method(), true);
        foreach ($a_ddata as $a_data)
        {
            $a_data['syn_label'] = urldecode(utf8_decode($a_data['syn_label']));
        }

With this code I through only the last array [2], but how to through array?please help me I need to get the array:

  Array
(
[0] => Array
    (
        [syn_id] => 17070
        [syn_label] => fd dfd
    )
[1] => Array
    (
        [syn_id] => 17068
        [syn_label] => fds dsfds
    )
[2] => Array
    (
        [syn_id] => 17069
        [syn_label] => klk stw
    )
 )
        $a_ddata = json_decode(method(), true); $i=0;
        foreach ($a_ddata as $a_data)
        {
            $a_data_f[$i]['syn_id'] = $a_data['syn_id'];
            $a_data_f[$i]['syn_label'] = urldecode(utf8_decode($a_data['syn_label']));
            $i++;
        }

This should be your answer..

When you iterate through something using foreach, by default PHP makes a copy of each element for you to use within the loop. So in your code,

$a_ddata = json_decode(method(), true);
foreach ($a_ddata as $a_data)
{
    // $a_data is a separate copy of one of the child arrays in $a_ddata
    // this next line will modify the copy
    $a_data['syn_label'] = urldecode(utf8_decode($a_data['syn_label']));
    // but at the end of the loop the copy is discarded and replaced with a new one
}

Fortunately the manual page for foreach gives us a way to override this behavior with the reference operator &. If you place it between the as keyword and your loop variable, you're able to update the source array within your loop.

$a_ddata = json_decode(method(), true);
foreach ($a_ddata as &$a_data)
{
    // $a_data is now a reference to one of the elements to $a_ddata
    // so, this next line will update $a_ddata's individual records 
    $a_data['syn_label'] = urldecode(utf8_decode($a_data['syn_label']));
}
// and you should now have the result you want in $a_ddata

This should help:

$a_data['syn_label'][] = urldecode(utf8_decode($a_data['syn_label']));

For each iteration you are only replacing $a_data['syn_label']. By adding [] you are making it a multi dimension array which increments for every iteration.