1

これは非常にばかげているかもしれませんが、これを行うことができませんでした。

php ファイルに配列を挿入しようとしています。ただし、配列を php ファイルに挿入することはできますが、形式は希望どおりではありません。2 つのファイルがあります。

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

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

 }      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 に挿入されます

staticSurveyDataFileTest.php

<?php
$itemFkids = Array
(
    "203_19" => i27,//double quotes missing for all the lines . See below for desired output//
    "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 
)//comma missing
$demoFkids = Array
(
    "129_2" => b1
)//comma missing
$commentFkids = Array
(
    "373_375" => 1,
    "380_382" => 2
)//comma missing
?>

このようなファイルを挿入する必要があります

望ましい出力

<?php
    $itemFkids = Array
    (
        "203_19" => "i27",//notices the double quotes here
        "207_22" => "i28",
        "357_22" => "i99",
        .
        .
        .

        .
        .
.

    ),//notice a comma here
    $demoFkids = Array
    (
        "129_2" => "b1"//notices the double quotes here
    ),//notice a comma here
    $commentFkids = Array
    (
        "373_375" => "1",
        "380_382" => "2"//notices the double quotes here
    ),//notice a comma here
    ?>

事前にご協力いただきありがとうございます:)

4

4 に答える 4

3

次のようなものを使用できます。

<?php
    $a = array (1, 2, array ("a", "b", "c"));
    var_export($a);
?>

そして、これは以下を出力します:

array (
  0 => 1,
  1 => 2,
  2 => 
  array (
    0 => 'a',
    1 => 'b',
    2 => 'c',
  ),
)

http://php.net/manual/fr/function.var-export.phpでドキュメントを確認してください。

于 2012-07-16T10:10:15.223 に答える
1

目的の出力のコード:

<?php
    $result = array_merge($itemFkids, $demoFkids, $commentFkids);
    var_export($result);
?>

出力:

<?php
    $itemFkids = Array
    (
        "203_19" => "i27",
        "207_22" => "i28",
        "357_22" => "i99",
        .
        .
        .
    ),
    $demoFkids = Array
    (
        "129_2" => "b1"
    ),
    $commentFkids = Array
    (
        "373_375" => "1",
        "380_382" => "2"
    ),
?>

完全なコードで作業するまで、確実に言うことはできません! :)

于 2012-07-16T10:21:47.527 に答える
0

php関数var_exportを使用してみてください

于 2012-07-16T10:08:34.553 に答える
0

これを試しても価値があります:

<?php
class A
{
    public $var1;
    public $var2;

    public static function __set_state($an_array)
    {
        $obj = new A;
        $obj->var1 = $an_array['var1'];
        $obj->var2 = $an_array['var2'];
        return $obj;
    }
}

$a = new A;
$a->var1 = 5;
$a->var2 = 'foo';

eval('$b = ' . var_export($a, true) . ';'); // $b = A::__set_state(array(
                                     //    'var1' => 5,
                                     //    'var2' => 'foo',
                                     // ));
var_dump($b);
?>

上記の出力は次のとおりです。

object(A)#2 (2) {
    ["var1"]=>
    int(5)
    ["var2"]=>
    string(3) "foo"
}
于 2012-07-16T10:12:52.637 に答える