求教,多维数组处理
程序员文章站
2024-04-03 23:35:58
...
各位大神,我有一个多维数组,结构如下
我想在数组里面增加一个元素flag与status同级,也就是说,只要是有status出现的,就有flag元素与之匹配,请问,PHP有这样的函数,实现这个功能么?
我写的代码,比你多了好多行,?死了,结贴,给分。。。
array(7) { ["hardware"]=> array(1) { ["status"]=> string(2) "on" } ["software"]=> array(2) { ["systemchk"]=> array(2) { ["status"]=> string(2) "on" ["system"]=> array(3) { ["xp"]=> array(3) { ["status"]=> string(2) "on" ["sp"]=> string(1) "1" ["KB"]=> string(0) "" } ["win7"]=> array(3) { ["status"]=> string(2) "on" ["sp"]=> string(1) "1" ["KB"]=> string(0) "" } ["win8"]=> array(3) { ["status"]=> string(2) "on" ["sp"]=> string(1) "1" ["KB"]=> string(0) "" } } } ["softwarechk"]=> array(2) { ["status"]=> string(3) "off" ["softfp"]=> array(2) { [0]=> array(3) { ["softfp_oid"]=> string(18) "DEFAULT_SOFTFP_VRV" ["list"]=> string(1) "1" ["group"]=> string(0) "" } [1]=> array(3) { ["softfp_oid"]=> string(18) "DEFAULT_SOFTFP_TMP" ["list"]=> string(1) "0" ["group"]=> string(0) "" } } } } ["safechk"]=> array(7) { ["macchk"]=> array(1) { ["status"]=> string(2) "on" } ["agentchk"]=> array(1) { ["status"]=> string(2) "on" } ["termchk"]=> array(1) { ["status"]=> string(2) "on" } ["arpchk"]=> array(1) { ["status"]=> string(2) "on" } ["natchk"]=> array(1) { ["status"]=> string(2) "on" } ["screenchk"]=> array(3) { ["status"]=> string(2) "on" ["screenpwd"]=> string(1) "0" ["screentime"]=> string(1) "0" } ["oschk"]=> array(1) { ["status"]=> string(2) "on" } } ["illegalchk"]=> array(4) { ["status"]=> string(2) "on" ["pact"]=> string(4) "HTTP" ["ip"]=> string(0) "" ["port"]=> string(0) "" } ["udiskchk"]=> array(2) { ["status"]=> string(2) "on" ["action"]=> string(1) "0" } ["netcardchk"]=> array(7) { ["status"]=> string(2) "on" ["line"]=> string(1) "1" ["wireless"]=> string(1) "1" ["3g"]=> string(1) "1" ["vpn"]=> string(1) "1" ["other"]=> string(1) "1" ["total"]=> string(1) "6" } ["userchk"]=> array(1) { ["status"]=> string(2) "on" }}
我想在数组里面增加一个元素flag与status同级,也就是说,只要是有status出现的,就有flag元素与之匹配,请问,PHP有这样的函数,实现这个功能么?
回复讨论(解决方案)
php 不可能预知你的特殊需求,所以必须你自己写
$a = array( "hardware" => array( "status" => "on", ), "software" => array( "systemchk" => array( "status" => "on", "system" => array( "xp" => array( "status" => "on", "sp" => "1", "KB" => "", ), "win7" => array( "status" => "on", "sp" => "1", "KB" => "", ), "win8" => array( "status" => "on", "sp" => "1", "KB" => "", ), ), ), "softwarechk" => array( "status" => "off", "softfp" => array( 0 => array( "softfp_oid" => "DEFAULT_SOFTFP_VRV", "list" => "1", "group" => "", ), 1 => array( "softfp_oid" => "DEFAULT_SOFTFP_TMP", "list" => "0", "group" => "", ), ), ), ), "safechk" => array( "macchk" => array( "status" => "on", ), "agentchk" => array( "status" => "on", ), "termchk" => array( "status" => "on", ), "arpchk" => array( "status" => "on", ), "natchk" => array( "status" => "on", ), "screenchk" => array( "status" => "on", "screenpwd" => "0", "screentime" => "0", ), "oschk" => array( "status" => "on", ), ), "illegalchk" => array( "status" => "on", "pact" => "HTTP", "ip" => "", "port" => "", ), "udiskchk" => array( "status" => "on", "action" => "0", ), "netcardchk" => array( "status" => "on", "line" => "1", "wireless" => "1", "3g" => "1", "vpn" => "1", "other" => "1", "total" => "6", ), "userchk" => array( "status" => "on", ),);function addflag(&$ar) { if(! is_array($ar)) return;$ar; if(isset($ar['status'])) $ar['flag'] = ''; foreach($ar as &$v) addflag($v); return $ar;}var_export(addflag($a));
array ( 'hardware' => array ( 'status' => 'on', 'flag' => '', ), 'software' => array ( 'systemchk' => array ( 'status' => 'on', 'system' => array ( 'xp' => array ( 'status' => 'on', 'sp' => '1', 'KB' => '', 'flag' => '', ), 'win7' => array ( 'status' => 'on', 'sp' => '1', 'KB' => '', 'flag' => '', ), 'win8' => array ( 'status' => 'on', 'sp' => '1', 'KB' => '', 'flag' => '', ), ), 'flag' => '', ), 'softwarechk' => array ( 'status' => 'off', 'softfp' => array ( 0 => array ( 'softfp_oid' => 'DEFAULT_SOFTFP_VRV', 'list' => '1', 'group' => '', ), 1 => array ( 'softfp_oid' => 'DEFAULT_SOFTFP_TMP', 'list' => '0', 'group' => '', ), ), 'flag' => '', ), ), 'safechk' => array ( 'macchk' => array ( 'status' => 'on', 'flag' => '', ), 'agentchk' => array ( 'status' => 'on', 'flag' => '', ), 'termchk' => array ( 'status' => 'on', 'flag' => '', ), 'arpchk' => array ( 'status' => 'on', 'flag' => '', ), 'natchk' => array ( 'status' => 'on', 'flag' => '', ), 'screenchk' => array ( 'status' => 'on', 'screenpwd' => '0', 'screentime' => '0', 'flag' => '', ), 'oschk' => array ( 'status' => 'on', 'flag' => '', ), ), 'illegalchk' => array ( 'status' => 'on', 'pact' => 'HTTP', 'ip' => '', 'port' => '', 'flag' => '', ), 'udiskchk' => array ( 'status' => 'on', 'action' => '0', 'flag' => '', ), 'netcardchk' => array ( 'status' => 'on', 'line' => '1', 'wireless' => '1', '3g' => '1', 'vpn' => '1', 'other' => '1', 'total' => '6', 'flag' => '', ), 'userchk' => array ( 'status' => 'on', 'flag' => '', ),)
php 不可能预知你的特殊需求,所以必须你自己写
$a = array( "hardware" => array( "status" => "on", ), "software" => array( "systemchk" => array( "status" => "on", "system" => array( "xp" => array( "status" => "on", "sp" => "1", "KB" => "", ), "win7" => array( "status" => "on", "sp" => "1", "KB" => "", ), "win8" => array( "status" => "on", "sp" => "1", "KB" => "", ), ), ), "softwarechk" => array( "status" => "off", "softfp" => array( 0 => array( "softfp_oid" => "DEFAULT_SOFTFP_VRV", "list" => "1", "group" => "", ), 1 => array( "softfp_oid" => "DEFAULT_SOFTFP_TMP", "list" => "0", "group" => "", ), ), ), ), "safechk" => array( "macchk" => array( "status" => "on", ), "agentchk" => array( "status" => "on", ), "termchk" => array( "status" => "on", ), "arpchk" => array( "status" => "on", ), "natchk" => array( "status" => "on", ), "screenchk" => array( "status" => "on", "screenpwd" => "0", "screentime" => "0", ), "oschk" => array( "status" => "on", ), ), "illegalchk" => array( "status" => "on", "pact" => "HTTP", "ip" => "", "port" => "", ), "udiskchk" => array( "status" => "on", "action" => "0", ), "netcardchk" => array( "status" => "on", "line" => "1", "wireless" => "1", "3g" => "1", "vpn" => "1", "other" => "1", "total" => "6", ), "userchk" => array( "status" => "on", ),);function addflag(&$ar) { if(! is_array($ar)) return;$ar; if(isset($ar['status'])) $ar['flag'] = ''; foreach($ar as &$v) addflag($v); return $ar;}var_export(addflag($a));
array ( 'hardware' => array ( 'status' => 'on', 'flag' => '', ), 'software' => array ( 'systemchk' => array ( 'status' => 'on', 'system' => array ( 'xp' => array ( 'status' => 'on', 'sp' => '1', 'KB' => '', 'flag' => '', ), 'win7' => array ( 'status' => 'on', 'sp' => '1', 'KB' => '', 'flag' => '', ), 'win8' => array ( 'status' => 'on', 'sp' => '1', 'KB' => '', 'flag' => '', ), ), 'flag' => '', ), 'softwarechk' => array ( 'status' => 'off', 'softfp' => array ( 0 => array ( 'softfp_oid' => 'DEFAULT_SOFTFP_VRV', 'list' => '1', 'group' => '', ), 1 => array ( 'softfp_oid' => 'DEFAULT_SOFTFP_TMP', 'list' => '0', 'group' => '', ), ), 'flag' => '', ), ), 'safechk' => array ( 'macchk' => array ( 'status' => 'on', 'flag' => '', ), 'agentchk' => array ( 'status' => 'on', 'flag' => '', ), 'termchk' => array ( 'status' => 'on', 'flag' => '', ), 'arpchk' => array ( 'status' => 'on', 'flag' => '', ), 'natchk' => array ( 'status' => 'on', 'flag' => '', ), 'screenchk' => array ( 'status' => 'on', 'screenpwd' => '0', 'screentime' => '0', 'flag' => '', ), 'oschk' => array ( 'status' => 'on', 'flag' => '', ), ), 'illegalchk' => array ( 'status' => 'on', 'pact' => 'HTTP', 'ip' => '', 'port' => '', 'flag' => '', ), 'udiskchk' => array ( 'status' => 'on', 'action' => '0', 'flag' => '', ), 'netcardchk' => array ( 'status' => 'on', 'line' => '1', 'wireless' => '1', '3g' => '1', 'vpn' => '1', 'other' => '1', 'total' => '6', 'flag' => '', ), 'userchk' => array ( 'status' => 'on', 'flag' => '', ),)
我写的代码,比你多了好多行,?死了,结贴,给分。。。