我正在尝试将数组打印到staticSurveyDataFileTest.php文件中。我能够打印阵列,但不是理想的格式。
查看以下代码
File1.php
<?php
include_once("../dc/dcCommonLib.php");
include_once("../dc/persistence/UserData.php");
require_once("../../lib/include/connect.inc.php");
$_SESSION["survey"] = "BestBuyAug2012";
$idLink = dbconnect($_SESSION["survey"]);
$surveyWidget = rendererSurveyLoadHandler();
setDataToSession("surveywidget",$surveyWidget);
$userData = &UserData::getInstance();
$userData->setSurvey($surveyWidget);
saveFkidsToOidToFkidMappingArray($userData->OidToFkidMapping);
// prepare demo array
prepareItemArray($userData->OidToFkidMapping["Demographic"]["Q"],$demo,"b");
// prepare item array
prepareItemArray($userData->OidToFkidMapping["Default"]["Q"],$item,"i");
prepareItemArray($userData->OidToFkidMapping["Default"]["M"],$item,"i");
// prepare comment array
prepareCommentArray($userData->OidToFkidMapping["Comment"]["C"],$comment);
if(!function_exists('file_put_contents')) {
function file_put_contents($filename, $data,$type, $file_append = false) {
$fp = fopen($filename, (!$file_append ? 'w+' : 'a+'));
if(!$fp) {
trigger_error('file_put_contents cannot write in file.', E_USER_ERROR);
return;
}
if($type) {
fputs($fp, "$".$type."=".preg_replace("/[\[\]]/","\"",print_r($data, TRUE)));
}else {
fputs($fp, print_r($data, TRUE));
}
fclose($fp);
}
}
print("Strart writting ...................");
file_put_contents("staticSurveyDataFileTest.php", "<?php\n","",true);
file_put_contents("staticSurveyDataFileTest.php", $item,"itemFkids",true);
file_put_contents("staticSurveyDataFileTest.php", $demo,"demoFkids",true);
file_put_contents("staticSurveyDataFileTest.php", $comment,"commentFkids",true);
file_put_contents("staticSurveyDataFileTest.php", "?>","",true);
print("written ...");
function prepareItemArray($userDataArray, &$item, $itemStr) {
if(is_array($userDataArray)) {
foreach($userDataArray as $questId=>$respGrp) {
$selectionGrp=array_unique($respGrp);
if(count($selectionGrp)==1) {
$respGrpId=key($respGrp);
$respId = key($respGrp[$respGrpId]);
$item[$questId."_".key($respGrp)]=$itemStr.$respGrp[$respGrpId][$respId];
}else {
foreach ($respGrp as $respGrpId=>$resp) {
$respGrp[$respGrpId]=$itemStr.$resp;
}
$item[$questId."_".key($respGrp)]=$respGrp;
}
}
}
}
function prepareCommentArray($userDataArray, &$item) {
if(is_array($userDataArray)) {
foreach($userDataArray as $questId=>$respGrp) {
$selectionGrp=array_unique($respGrp);
if(count($selectionGrp)==1) {
$respGrpId=key($respGrp);
$item[$questId."_".key($respGrp)]=$respGrp[$respGrpId]["fk_id"];
}
}
}
}
?>
我在staticSurveyDataFileTest.php中获得的内容(输入)是
<?php
$itemFkids=Array
(
"203_19" => i27 //Notice that the Comma's(,) are not present
"207_22" => i28
"357_22" => i99
"370_70" => i104
"377_72" => i105
"140_8" => i1
"141_8" => i2
"142_8" => i3
"143_8" => i4
"144_8" => i5
"145_8" => i6
"151_8" => i7
"152_8" => i8
"158_8" => i9
"164_8" => i10
"165_8" => i11
"166_8" => i12
"167_8" => i13
"168_8" => i14
"169_8" => i15
"175_8" => i16
"176_8" => i17
"182_8" => i18
"183_8" => i19
"184_8" => i20
"190_8" => i21
"196_8" => i22
"197_8" => i23
"198_8" => i24
"199_8" => i25
"200_8" => i26
"214_8" => i29
"215_8" => i30
"216_8" => i31
"222_8" => i32
"223_8" => i33
"224_8" => i34
"225_8" => i35
"226_8" => i36
"227_8" => i37
"233_8" => i38
"234_8" => i39
"235_8" => i40
"236_8" => i41
"237_8" => i42
"243_8" => i43
"244_8" => i44
"245_8" => i45
"251_8" => i46
"252_8" => i47
"253_8" => i48
"254_8" => i49
"255_8" => i50
"256_8" => i51
"257_8" => i52
"263_8" => i53
"264_8" => i54
"265_8" => i55
"266_8" => i56
"267_8" => i57
"268_8" => i58
"269_8" => i59
"270_8" => i60
"271_8" => i61
"272_8" => i62
"278_8" => i63
"279_8" => i64
"280_8" => i65
"281_8" => i66
"282_8" => i67
"283_8" => i68
"289_8" => i69
"290_8" => i70
"296_8" => i71
"297_8" => i72
"298_8" => i73
"299_8" => i74
"300_8" => i75
"301_8" => i76
"307_8" => i77
"308_8" => i78
"309_8" => i79
"310_8" => i80
"311_8" => i81
"312_8" => i82
"313_8" => i83
"314_8" => i84
"315_8" => i85
"316_8" => i86
"317_8" => i87
"318_8" => i88
"324_26" => i89
"328_37" => i90
"332_48" => i91
"338_59" => i92
"344_59" => i93
"345_59" => i94
"351_8" => i95
"352_8" => i96
"353_8" => i97
"354_8" => i98
"364_8" => i100
"365_8" => i101
"366_8" => i102
"367_8" => i103
)
$demoFkids=Array
(
"129_2" => b1
)
$commentFkids=Array
(
"373_375" => 1
"380_382" => 2
)
?>
理想情况下我想要这样的事情
<?php
$itemFkids=Array
(
"203_19" => i27, //notice the comma's present here
"207_22" => i28,
"357_22" => i99,
"370_70" => i104,
"377_72" => i105,
"140_8" => i1,
.
.
.
.
.
.. 我需要在代码中做些哪些更改? 请帮忙 。 在此先感谢:)
答案 0 :(得分:1)
我的解决方案需要额外的preg_replace,但它应该完成工作。我假设您的数组中的所有值都以“我[somenumbers]”格式出现。如果没有,你需要一个不同的正则表达式。
if($type)
fputs($fp, "$".$type."=".preg_replace("/[\[\]]/","\"",print_r($data, TRUE)));
更改为:
if($type){
$count = count($data);
$i = 1;
//loop through your type array and append comma , to each except last
foreach($data as $key=>$val) {
//if we are before last key, append comma
if($i < $count)
$data[$key] .= ',';
$i++;
}
//run same preg_replace as before
$data2 = preg_replace('/[\[\]]/','"',print_r($data,TRUE));
//write to file
fputs($fp, "$" . $type . " = " . print_r($data2,TRUE));
}
希望这有帮助!