PHP。如何提取新数组的数组键?
如何从该阵列中提取PHP。如何提取新数组的数组键?,php,arrays,Php,Arrays,如何从该阵列中提取服务器\u vps\u de\u dc1\u s1: $server = array( "vps" => array ( "de" => array ( "dc1" => array ( "s1" => array ( "name"=&g
服务器\u vps\u de\u dc1\u s1
:
$server = array(
"vps" => array (
"de" => array (
"dc1" => array (
"s1" => array (
"name"=> "Xen VPS 200",
"processor"=> "200 MHz",
"memory"=> "200 MB",
),
),
),
),
"dedicated" => array (
...
),
);
要构建与此类似的新阵列,请执行以下操作:
$server_id = array(
"1" => "server_vps_de_dc1_s1",
"2" => "server_vps_de_dc1_s2",
"3" => "server_vps_de_dc2_s1",
"4" => "server_vps_usa_dc1_s1",
...
);
您需要递归:
function get_keys( $array)
{
if( !is_array( $array))
return array();
$k = key( $array);
return array_merge( array( $k), get_keys( $array[$k]));
}
您可以这样调用它:
$keys = get_keys( $array);
array_pop( $keys); // Get rid of the last key:
您将得到以下输出:
array(4) { [0]=> string(3) "vps" [1]=> string(2) "de" [2]=> string(3) "dc1" [3]=> string(2) "s1" }
您可以使用内爆()
形成新值:
您将不得不使用许多循环。你应该考虑重构你的代码;这看起来不太理想。
$new_value = implode( '_', $keys); // Outputs "vps_de_dc1_s1"