从未知数量的参数合并PHP数组

从未知数量的参数合并PHP数组,php,arrays,array-merge,Php,Arrays,Array Merge,我有一个PHP数组,如下所示: $array['my_data']['value'] = 'some value'; $array['my_own_data']['value'] = 'another value'; $array['different_data']['value'] = 'another value'; 我需要在PHP中使用array_merge之类的工具。问题是第一级密钥的数量未知。可能有150件,我不知道 这对我不起作用,因为钥匙数量未知: array_merge($ar

我有一个PHP数组,如下所示:

$array['my_data']['value'] = 'some value';
$array['my_own_data']['value'] = 'another value';
$array['different_data']['value'] = 'another value';
我需要在PHP中使用array_merge之类的工具。问题是第一级密钥的数量未知。可能有150件,我不知道

这对我不起作用,因为钥匙数量未知:

array_merge($array['my_data'], $array['my_own_data'], $array['different_data']);

我需要一个循环还是有什么花哨的东西?

如果您需要,可以这样做:

$array = array_map('current', $array);
或者可能

$array = array_map(function ($a) { return $a['value']; }, $array);
这应该给你

array('some value', 'another value', 'another value')

如果这是您想要的,则可以:

$array = array_map('current', $array);
或者可能

$array = array_map(function ($a) { return $a['value']; }, $array);
这应该给你

array('some value', 'another value', 'another value')
请试试这个:

$new_array = array();
foreach($array as $item) {
  $new_array[] = $item['value'];
};
请试试这个:

$new_array = array();
foreach($array as $item) {
  $new_array[] = $item['value'];
};
对于php5.2及以上版本:

function stuff($a){
    return $a['value'];
}
array_map('stuff',$array);
对于php5.2及以上版本:

function stuff($a){
    return $a['value'];
}
array_map('stuff',$array);

如果我明白你想要什么,你可以使用
array\u map

要更改:

$a = array();
$a['x']['value'] = 1;
$a['y']['value'] = 3;
$a['z']['value'] = 3;
进入:

您可以定义一个函数:

function f($x) { return $x['value'];}
并使用
array\u map

$b = array_map(f, $a);

如果我明白你想要什么,你可以使用
array\u map

要更改:

$a = array();
$a['x']['value'] = 1;
$a['y']['value'] = 3;
$a['z']['value'] = 3;
进入:

您可以定义一个函数:

function f($x) { return $x['value'];}
并使用
array\u map

$b = array_map(f, $a);
问题是第一级密钥的数量未知。可能有150件,我不知道

这是一个容易解决的问题

如果您想知道第一级的键数:

$numberOfKeysOfTheFirstLevel = count($array);
你现在知道号码了。如果您确实需要他们的名字,您也可以这样做:

$keyNamesOfTheFirstLevel = array_keys($array);
然后你继续你的问题:

这对我不起作用,因为钥匙数量未知:
array\u merge($array['my\u data'],$array['my\u own\u data'],$array['different\u data'])

好消息是,您不需要知道执行
array\u merge
操作的键数:

call_user_func_array('array_merge', $array);
所以关于你在问题中写了什么,这应该可以回答。然而,结果可能不是您所期望的。请看其他答案,并请提问

问题是第一级密钥的数量未知。可能有150件,我不知道

这是一个容易解决的问题

如果您想知道第一级的键数:

$numberOfKeysOfTheFirstLevel = count($array);
你现在知道号码了。如果您确实需要他们的名字,您也可以这样做:

$keyNamesOfTheFirstLevel = array_keys($array);
然后你继续你的问题:

这对我不起作用,因为钥匙数量未知:
array\u merge($array['my\u data'],$array['my\u own\u data'],$array['different\u data'])

好消息是,您不需要知道执行
array\u merge
操作的键数:

call_user_func_array('array_merge', $array);
所以关于你在问题中写了什么,这应该可以回答。然而,结果可能不是您所期望的。请看其他答案,并请提问

会回来的

array(
  'value1' => 'some value', 
  'value2' => 'another value', 
  'value3' => 'another value', 
)
否则,你想要这样的东西吗

array(
  'value' => array('some value', 'another value', 'another value')
)
那你就可以做了

$array['my_data']['value'] = 'some value';
$array['my_own_data']['value'] = 'another value';
$array['different_data']['value'] = 'another value';

$result = array();
// PHP <= 5.2
array_walk($array, create_function('&$item, $key, &$dest', '
    foreach ((array) $item as $subKey => $value) {
        if (!isset($dest[$subKey])) { $dest[$subKey] = array(); }
        $dest[$subKey][] = $value;
    }
'), & $result);
var_export($result);
$array['my_data']['value']='some value';
$array['my_own_data']['value']='other value';
$array['different_data']['value']='other value';
$result=array();
//PHP
会回来的

array(
  'value1' => 'some value', 
  'value2' => 'another value', 
  'value3' => 'another value', 
)
否则,你想要这样的东西吗

array(
  'value' => array('some value', 'another value', 'another value')
)
那你就可以做了

$array['my_data']['value'] = 'some value';
$array['my_own_data']['value'] = 'another value';
$array['different_data']['value'] = 'another value';

$result = array();
// PHP <= 5.2
array_walk($array, create_function('&$item, $key, &$dest', '
    foreach ((array) $item as $subKey => $value) {
        if (!isset($dest[$subKey])) { $dest[$subKey] = array(); }
        $dest[$subKey][] = $value;
    }
'), & $result);
var_export($result);
$array['my_data']['value']='some value';
$array['my_own_data']['value']='other value';
$array['different_data']['value']='other value';
$result=array();

//PHP您希望最终的数组是什么样子的?您知道
array\u merge($array['my\u data']、$array['my\u own\u data']、$array['different\u data'])
将生成一个包含
$array['different_data']['value']
的数组,因为array\u merge将用相等键覆盖数组元素?您想做什么?您刚刚告诉我您遇到了一些问题,但不是需要从原始
$array
中检索什么?钥匙?第二把钥匙?值?您希望最终的数组是什么样子的?您知道吗
array\u merge($array['my\u data']、$array['my\u own\u data']、$array['different\u data'])
将生成一个包含
$array['different_data']['value']
的数组,因为array\u merge将用相等键覆盖数组元素?您想做什么?您刚刚告诉我您遇到了一些问题,但不是需要从原始
$array
中检索什么?钥匙?第二把钥匙?价值观?