Transforming arrays into the correct formats
If you know that the key field exists, you could use array_map() to apply a function on each row. This function could use array_column() to transform a column as keys, and another as values:

$arr = [
    [
        'field' =&gt; [
            ['@name' =&gt; 'first_name', '@value' =&gt; 'Jack'],
            ['@name' =&gt; 'last_name', '@value' =&gt; 'Lew'],
            ['@name' =&gt; 'email', '@value' =&gt; 'jack@gmail.com']
        ]
    ],
    [
        'field' =&gt; [
            ['@name' =&gt; 'first_name', '@value' =&gt; 'John'],
            ['@name' =&gt; 'last_name', '@value' =&gt; 'Doe'],
            ['@name' =&gt; 'email', '@value' =&gt; 'John@gmail.com']
        ]
    ]
];

$data = array_map(function($item) {
    return array_column($item['field'], '@value', '@name');
}, $arr) ;

print_r($data);


Output:

Array
(
    [0] =&gt; Array
        (
            [first_name] =&gt; Jack
            [last_name] =&gt; Lew
            [email] =&gt; jack@gmail.com
        )

    [1] =&gt; Array
        (
            [first_name] =&gt; John
            [last_name] =&gt; Dow
            [email] =&gt; John@gmail.com
        )

)