这是我的输入数组:
INPUT:
$input["a"]["b"]["UK"] = 96 ;
$input["a"]["c"]["UK"] = 69 ;
$input["a"]["bp"]["USA"] = 29 ;
$input["a"]["c"]["USA"] = 59 ;
$input["a"]["dd"]["UK"] = 31 ;
$input["a"]["cg"]["UK"] = 38 ;
我想获得一个只包含[“USA”]的新数组。所以输出必须是..............
输出:
$output["a"]["bp"]["USA"] = 29 ;
$output["a"]["c"]["USA"] = 59 ;
是否可能?
答案 0 :(得分:5)
这样可行。
$input["a"]["b"]["UK"] = 96 ;
$input["a"]["c"]["UK"] = 69 ;
$input["a"]["bp"]["USA"] = 29 ;
$input["a"]["c"]["USA"] = 59 ;
$input["a"]["dd"]["UK"] = 31 ;
$input["a"]["cg"]["UK"] = 38 ;
$tempResult = array();
foreach($input as $key => $value){
foreach($value as $subkey => $subvalue){
foreach($subvalue as $finalkey => $finalvalue){
if($finalkey == 'USA') {
$tempResult[$key][$subkey][$finalkey] = $finalvalue;
}
}
}
}
echo '<pre>';print_r($tempResult);echo '</pre>';
答案 1 :(得分:3)
<?php
$input["a"]["b"]["UK"] = 96 ;
$input["a"]["c"]["UK"] = 69 ;
$input["a"]["bp"]["USA"] = 29 ;
$input["a"]["c"]["USA"] = 59 ;
$input["a"]["dd"]["UK"] = 31 ;
$input["a"]["cg"]["UK"] = 38 ;
foreach($input as $x => $y) {
foreach($y as $zz => $r) {
foreach($r as $xxx => $j) {
if($xxx == "USA") {
echo($j);
}
}
}
}
?>
user2944231更干净我想但是你
答案 2 :(得分:3)
最直接的答案是使用foreach循环:
$input=array();
$output=array();
$input["a"]["b"]["UK"] = 96 ;
$input["a"]["c"]["UK"] = 69 ;
$input["a"]["bp"]["USA"] = 29 ;
$input["a"]["c"]["USA"] = 59 ;
$input["a"]["dd"]["UK"] = 31 ;
$input["a"]["cg"]["UK"] = 38 ;
//get the level 0 keys (e.g. a) level 0 value (e.g array("b"=>array("UK"=>96)) )
foreach($input as $level_0_key => $level_0_value)
{
//get the level 1 keys (e.g. b) level 1 value (e.g array("UK"=>96) )
foreach($level_0_value as $level_1_key => $level_1_value)
{
//get the level 2 keys (e.g. UK) level 2 value (e.g 96)
foreach($level_1_value as $level_2_key => $level_2_value)
{
if($level_2_key=="USA")
{
$output[$level_0_key][$level_1_key][$level_2_key]=$level_2_value;
}
}
}
}
print_r($output);