Php 根据需要修剪阵列

Php 根据需要修剪阵列,php,arrays,Php,Arrays,我在提交表单时收到以下数组 [_wpcf7] => 3 [_wpcf7_version] => 4.9.2 [_wpcf7_locale] => en_US [_wpcf7_unit_tag] => wpcf7-f3-p2-o1 [_wpcf7_container_post] => 2 [your-name] => sad [your-subject] => sad [your-message] => sdsa 但是,我需要将其修剪并移动到另一个

我在提交表单时收到以下数组

[_wpcf7] => 3
[_wpcf7_version] => 4.9.2
[_wpcf7_locale] => en_US
[_wpcf7_unit_tag] => wpcf7-f3-p2-o1
[_wpcf7_container_post] => 2
[your-name] => sad
[your-subject] => sad
[your-message] => sdsa
但是,我需要将其修剪并移动到另一个数组,如

[your-name] => sad
[your-subject] => sad
[your-message] => sdsa
实际上我需要删除数组的内容

[_wpcf7] => 3
[_wpcf7_version] => 4.9.2
[_wpcf7_locale] => en_US
[_wpcf7_unit_tag] => wpcf7-f3-p2-o1
[_wpcf7_container_post] => 2
因此,请指导我如何使用PHP脚本执行此操作,请尝试以下代码:

$array2 = array(
 'your-name' => $array1['your-name'],
 'your-subject' => $array1['your-subject'],
 'your-message' => $array1['your-message'],
);

如果总是最后三项(如您在评论中确认的),则可以使用此代码。
它将首先获取所有键名,然后将键向后循环三次以获取最后三项并将它们保存到
$namearr

$arr = ["_wpcf7" => 3,
"_wpcf7_version" => "4.9.2",
"_wpcf7_locale" => "en_US",
"_wpcf7_unit_tag" => "wpcf7-f3-p2-o1",
"_wpcf7_container_post" => 2,
"your-name" => "sad",
"your-subject" => "sad",
"your-message" => "sdsa"];

$keys = array_keys($arr);
$count = count($keys)-1;
$namearr=[];
for($i = $count; $i >$count-3;$i-- ){
    $namearr[$keys[$i]] = $arr[$keys[$i]];
}
var_dump($namearr);
输出:

array(3) {
  "your-message" => "sdsa"
  "your-subject" => "sad"
  "your-name" => "sad"
}

简单易行:-“从
\u wpcf7
开始移除密钥,并将剩余的密钥存储在另一个数组中”


同时检查此代码:-

快乐编码:-)

仅在数组中保存所需的键

$array2 = array(
 'your-name',
 'your-subject',
 'your-message',
);

$res = array_intersect_key($array1, array_flip($array2));

你试过什么了吗?是的,我试过了。这是数组总是按相同的顺序排列吗?是的,上面的字段按相同的顺序排列。谢谢你的回答。有没有一种方法可以删除上面的字段,因为你提到的字段是动态的,但是上面的字段是常量。我相信问题是OP不知道“你的名字”等键是什么。is@Andreas在这种情况下,我认为OP不知道它的计数:)它的计数?不明白。我只是参考J.Litvaks回答时留下的评论。这不是一个明确的评论,但我认为这意味着关键是dynamic@YashOP不能向上投票。这是你应得的特权。你为什么认为你的答案应该被提升?据我所知,投票是用在好答案上的。这不是答案,只是密码。如果有的话downvoted@Andreas其实你是对的。这不是答案,但比你的答案要好得多。记住一件事,最重要的答案必须是简单、易懂和最少的代码。我的答案以什么方式难以理解?无法找到任何难以理解的注释。这取决于提问者。@YashParekh你在说什么。我对我的代码有评论。它写在代码上面。我将把它复制到这里:它将首先获取所有键名,然后将键向后循环三次,以获取最后三项并将它们保存到$namearr
$array2 = array(
 'your-name',
 'your-subject',
 'your-message',
);

$res = array_intersect_key($array1, array_flip($array2));