从数组php中删除特定键=>值

从数组php中删除特定键=>值,php,arrays,unset,Php,Arrays,Unset,我有一个这样的数组 Array ( [0] => Array ( [to_id] => 3 [email] => ngkarthick.kumar@gmail.com [user_id] => 3 ) [2] => Array ( [to_id] => 2 [email] =&

我有一个这样的数组

Array
(
    [0] => Array
        (
            [to_id] => 3
            [email] => ngkarthick.kumar@gmail.com
            [user_id] => 3
        )

    [2] => Array
        (
            [to_id] => 2
            [email] => karthickkumarganesh@gmail.com
            [user_id] => 2
        )

    [4] => Array
        (
            [to_id] => 5
            [email] => phpkarthick@outlook.com
            [user_id] => 5
        )

)
我想得到如下的数组

Array
(
    [0] => Array
        (
            [email] => ngkarthick.kumar@gmail.com
            [user_id] => 3
        )

    [2] => Array
        (
            [email] => karthickkumarganesh@gmail.com
            [user_id] => 2
        )

    [4] => Array
        (
            [email] => phpkarthick@outlook.com
            [user_id] => 5
        )

)
我通过使用foreach循环实现了这一点,但我想使用单数组函数实现它,是否可能,请帮助

$array = array_map(
    function (array $ar) { return array_diff_key($ar, array_flip(array('to_id'))); },
    $array
);
没有一个函数可以做到这一点。你必须写一些代码。您还必须始终在数组中循环。你只能用不同的方式来修饰这个循环,并用不同的方式来修饰解除键的动作。我不认为任何东西比直接循环更有效或更清晰。但是,好吧,如果你想找更花哨的东西,那么就用上面的方法吧

//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>";

没有一个函数可以做到这一点。你必须写一些代码。您还必须始终在数组中循环。你只能用不同的方式来修饰这个循环,并用不同的方式来修饰解除键的动作。我不认为任何东西比直接循环更有效或更清晰。但是呢,,如果你想找更奇特的东西,请使用上面的方法。

你最有可能通过将数组映射或数组步与Closure结合使用来实现这一点。我只需将旧数组复制到新数组中,并在复制过程中使用该键,你最有可能通过数组映射或数组步实现这一点如果与closure一起使用,我只需将旧数组复制到新数组中,并在复制过程中输入该键即可,但我需要一些东西,如unset$array['to_id'];将在整个阵列中循环并删除任何类似的内容。您可以编写一个像unset_key$array这样的函数,“to_id”就可以了。但是它在默认情况下并不存在。谢谢,如何通知php社区在下一个版本中创建一些预定义的函数。。。我想他们不会的。PHP已经有足够的函数了,当它在用户代码中实现时,没有人需要核心中的超特定函数;将在整个阵列中循环并删除任何类似的内容。您可以编写一个像unset_key$array这样的函数,“to_id”就可以了。但是它在默认情况下并不存在。谢谢,如何通知php社区在下一个版本中创建一些预定义的函数。。。我想他们不会的。PHP已经有足够的函数了,当它在用户代码中实现时,没有人需要核心中的超特定函数。我的问题不是ForEach,这可能不是最好的方法,但它确实有效。尽量避免不相关的细节,如奖金部分。我的问题与Foreach无关。这可能不是最好的方法,但它确实有效。尽量避免不相关的细节,如奖金部分。
//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>";