简体   繁体   English

将数组的内容打印到PHP文件中

[英]Print contents of an array into a PHP file

I am trying to print an array into a file staticSurveyDataFileTest.php . 我正在尝试将数组打印到文件staticSurveyDataFileTest.php中。 I am able to print the array but not in the ideal format. 我可以打印数组,但不能以理想的格式打印。

Take a look into the following code 看一下下面的代码

File1.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"];            
            }
        }
    }   
}

?>

The contents(input) which I get in the staticSurveyDataFileTest.php is 我在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
)
?>

Ideally I want to something like this 理想情况下,我想要这样的事情

<?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,
.
.
.
.
.

.. What are the changes that I need to do in the code ? ..我需要在代码中进行哪些更改? Please Help . 请帮忙 。 Thanks in advance :) 提前致谢 :)

My solution requires an extra preg_replace, but it should get the job done. 我的解决方案需要一个额外的preg_replace,但它应该可以完成工作。 I am assuming that all of your values in your array come in the format "i[somenumbers]". 我假设您数组中的所有值都采用“ i [somenumbers]”格式。 If not, you need a different regex. 如果不是,则需要其他正则表达式。

if($type) 
    fputs($fp, "$".$type."=".preg_replace("/[\[\]]/","\"",print_r($data, TRUE)));

Changes to: 更改为:

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));     

 }

Hope this helps! 希望这可以帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM