Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果键类似于键,则组合数组_Php_Arrays_Sorting - Fatal编程技术网

Php 如果键类似于键,则组合数组

Php 如果键类似于键,则组合数组,php,arrays,sorting,Php,Arrays,Sorting,有一个给定的数组和要映射的数组。我试图得到的是,如果给定的键与map中的键相似,我希望给定的键变成map中的值 示例:给定的数组如下所示: given array (size=2) 'status' => string '200' (length=3) ------------ 'user' => string 'roger' (length=5) -------- |

有一个给定的数组和要映射的数组。我试图得到的是,如果给定的键与map中的键相似,我希望给定的键变成map中的值

示例:给定的数组如下所示:

given array (size=2)
  'status' => string '200' (length=3)       ------------
  'user' => string 'roger' (length=5)       --------    |
                                                    |   |
                                                    |   |
                                                    |   |
map array (size=6)                                  |   |
  'date' => string 'date' (length=4)                |   |
  'user' => string 'username' (length=8)    --------    |
  'status' => string 'response_code' (length=13)   -----
  'url' => string 'url' (length=3)
  'method' => string 'method' (length=6)
  'ip' => string 'remote_address' (length=14)


desired_result array (size=2)
    'response_code' => string '200' (length=3)
    'username' => string 'roger' (length=5)

查看给定数组中的状态如何变为响应代码,用户如何变为用户名。您可以尝试以下代码

$given_array = [
    'status'    => '200',
    'user'      => 'roger' 
];

$map_array = [
    'date' => 'date',
    'user' => 'username',
    'status' => 'response_code',
    'url' => 'url',
    'method' => 'method',
    'ip' => 'remote_address'

];

$desired_array = [];

foreach($map_array as $key => $value)
{
    if(array_key_exists($key, $given_array))
    {
        $desired_array[$value] = $given_array[$key];
    }   
}
return $desired_array;

您可以尝试以下代码

$given_array = [
    'status'    => '200',
    'user'      => 'roger' 
];

$map_array = [
    'date' => 'date',
    'user' => 'username',
    'status' => 'response_code',
    'url' => 'url',
    'method' => 'method',
    'ip' => 'remote_address'

];

$desired_array = [];

foreach($map_array as $key => $value)
{
    if(array_key_exists($key, $given_array))
    {
        $desired_array[$value] = $given_array[$key];
    }   
}
return $desired_array;
您可以简单地使用array_walk-like作为

输出:

或者更简单地使用foreach循环

您可以简单地使用array_walk-like作为

输出:

或者更简单地使用foreach循环


我必须修正第二个参数,因为array_combine不只是检查键顺序,所以随着键顺序的不同,它开始变得丑陋:

$result = array_combine($mapx = array_intersect_key($map, $given), array_replace($mapx, $given));

我必须修正第二个参数,因为array_combine不只是检查键顺序,所以随着键顺序的不同,它开始变得丑陋:

$result = array_combine($mapx = array_intersect_key($map, $given), array_replace($mapx, $given));

谢谢你的时间和回答!是的,我在第一个例子中看到过一段时间后,它刹车了。。现在事情开始变得复杂了。。但是谢谢你,谢谢你的时间和回答!是的,我在第一个例子中看到过一段时间后,它刹车了。。现在事情开始变得复杂了。。但是谢谢你
$result = array_combine($mapx = array_intersect_key($map, $given), array_replace($mapx, $given));