如何在php中存储每个数组值及其键

如何在php中存储每个数组值及其键,php,arrays,key,array-merge,array-push,Php,Arrays,Key,Array Merge,Array Push,我想将变量与其键一起存储在数组中,如: filter : [ "0" : "test", "1" : "you", "2" : "php" ] 首先我有filter[]array,每次有更新请求时,我都想用它的键向这个数组添加一个值,自动创建键 我尝试过这两种方法,但它们不存储变量键: //$seat_filters = filter array fetched from db $filters = array($request->input('filter')); $filter

我想将变量与其键一起存储在数组中,如:

filter : [ 
"0" : "test",
"1" : "you",
"2" : "php"
]
首先我有
filter[]
array,每次有更新请求时,我都想用它的键向这个数组添加一个值,自动创建键

我尝试过这两种方法,但它们不存储变量键:

//$seat_filters = filter array fetched from db

$filters = array($request->input('filter'));

$filters_array = array_merge($seat_filters, $filters);
当我检查
$filters\u array
的结果时,我得到:

filter : [
"test",
"you",
"php"
]
在以下数组中存储值的方法中也会发生同样的情况:

 array_push($seat_filters ,$request->input('filter'));
只有第二种方法较短。
仅供参考:此结果为JSON格式。

要将密钥保存在数组中,请执行以下操作:

  $output = array_map(function($v, $k){return[$k, $v];}, $array);

要将密钥保存在数组中,请执行以下操作:

  $output = array_map(function($v, $k){return[$k, $v];}, $array);

在php中尝试此方法

array_combine()

在php中尝试此方法

array_combine()

虽然我不明白这些都是为了什么,但还是有一些建议

因此,您有一个类似以下的数组:

$a = ["test","you","php"];
// though it's indexes are not visible - they exist
$filter = [];
// you can see indexes in this `foreach`
foreach ($a as $k => $v) {
    echo 'Key is ', $k, '; value is ', $v;
    // now you can add both values to your filter
    $filter[] = [$k, $v];
}
print_r($filter);
echo json_encode($filter); // [[0,"test"],[1,"you"],[2,"php"]]

虽然我不明白这些都是为了什么,但还是有一些建议

因此,您有一个类似以下的数组:

$a = ["test","you","php"];
// though it's indexes are not visible - they exist
$filter = [];
// you can see indexes in this `foreach`
foreach ($a as $k => $v) {
    echo 'Key is ', $k, '; value is ', $v;
    // now you can add both values to your filter
    $filter[] = [$k, $v];
}
print_r($filter);
echo json_encode($filter); // [[0,"test"],[1,"you"],[2,"php"]]

如果数组键是数字且有序的,json会忽略它们。谁投了反对票?为什么?@u_mulder当我取消设置其中一个数组元素时,我会得到它们的键以及json中的值。为什么会这样,因为当您取消设置时,索引的顺序是broken@u_mulder谢谢你的提示,那么有没有这样的方法来存储它们的键呢?如果数组键是数字且有序的,json会忽略它们。谁投了反对票?为什么?@u_mulder当我取消设置其中一个数组元素时,我会得到它们的键以及json中的值。为什么会这样,因为当您取消设置时,索引的顺序是broken@u_mulder谢谢你的提示,那么有没有这样的方法来存储他们的密钥呢?如果可能的话,使用counts[]数组变量,也可以增加它。然后使用array_combine()方法。如果可能,请使用counts[]数组变量,并将其递增。然后使用array_combine()方法。我还找到了解决问题的方法:我可以给这个值自定义键,如:f1或f2…if((array_search($request->input('filter'),$seat_filters))==false){$count=count($seat_filters);$filters_array=array_merge($seat_filters,array(“f”。$count++=>request->input('filter'));}我也找到了解决问题的方法:我可以给这个值自定义键,比如:f1或f2…如果((数组搜索($request->input('filter'),$seat\u filters))==false){$count=count($seat\u filters);$filters\u数组=数组合并($seat\u filters,array(“f”。$count++=>$request->input”)('filter'));}