2014-02-20 2 views
0

У меня есть массив как этотудалить конкретный ключ => значение из массива PHP

Array 
(
    [0] => Array 
     (
      [to_id] => 3 
      [email] => [email protected] 
      [user_id] => 3 
     ) 

    [2] => Array 
     (
      [to_id] => 2 
      [email] => [email protected] 
      [user_id] => 2 
     ) 

    [4] => Array 
     (
      [to_id] => 5 
      [email] => [email protected] 
      [user_id] => 5 
     ) 

) 

и я хотел бы получить массив, как показано ниже

Array 
(
    [0] => Array 
     (
      [email] => [email protected] 
      [user_id] => 3 
     ) 

    [2] => Array 
     (
      [email] => [email protected] 
      [user_id] => 2 
     ) 

    [4] => Array 
     (
      [email] => [email protected] 
      [user_id] => 5 
     ) 

) 

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

+0

вы, скорее всего, сможет достичь этого с array_map или array_walk используется в сочетании с закрытием – mic

+0

я бы просто скопировать старый массив в новый массив ommiting, что ключ в процессе копирования –

ответ

4
$array = array_map(
    function (array $ar) { return array_diff_key($ar, array_flip(array('to_id'))); }, 
    $array 
); 

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

+0

это будет делать работа, но мне нужны такие вещи, как unset ($ array ['to_id']); будет циклически проходить и удалять весь массив –

+0

Ничего подобного не существует. Вы можете написать такую ​​функцию, как 'unset_key ($ array, 'to_id')', которая бы это сделала. Но по умолчанию он не существует. – deceze

+0

спасибо, как сообщить сообществу php, чтобы создать некоторую предопределенную функцию, чтобы сделать это в следующей версии. –

0
//This is the array name in which your data is stored. 
$my_array = array($array_data); 

// now lets get one level inside the array 
foreach($my_array as $key => $value){ 

// ok now unset un-wanted index from the array into a temporary array 
unset($value['to_id']); 

// overwrite our temporary array to original array keeping the keys same as before. 
$my_array[$key] = $value; 
//Thats it your Problem Solved :) 
} 

echo "<pre>"; 
print_r($my_array); 
echo "</pre>"; 
+0

мои вопросы не связаны с foreach –

+0

Возможно, это не лучший способ, но он работает. Старайтесь избегать ненужных деталей, таких как раздел «Бонус». –

Смежные вопросы