1

This might be very silly but we have not been able to do this .

We are trying to insert an array into a php file . However we are able to insert the array into a php file but the format is not as desired . We have 2 files .

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

?>

The array from this file is inserted into 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
?>

We need to insert a file something like this

Desired Output

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

Thanks for your help in advance :)

2
  • 4
    why not use json_encode/json_decode? Commented Jul 16, 2012 at 10:06
  • Really appreciate your help . But where should I insert that code in my program ? Commented Jul 16, 2012 at 10:41

4 Answers 4

3

You can use something like this:

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

And this outputs:

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

Check out the documentation at http://php.net/manual/fr/function.var-export.php

Sign up to request clarification or add additional context in comments.

Comments

1

Code for the desired output:

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

Outputs:

<?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"
    ),
?>

Cannot reliably say until we work with the full code! :)

5 Comments

Hi Praveen . Where should I insert this code <?php $result = array_merge($itemFkids, $demoFkids, $commentFkids); var_export($result); ?>
@TAJ The place you want to display this result!
I want to display the result in a new php file
Where should i add these changes in my File1.php ?
Oh! In that case, first add this in the same page and check if the result is desired. Then, add this in the new page by passing a parameter! :)
0

try using the php function var_export

Comments

0

Even trying this is worth:

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

The output of the above is:

object(A)#2 (2) {
    ["var1"]=>
    int(5)
    ["var2"]=>
    string(3) "foo"
}

2 Comments

Don't use eval, please. It's too dangerous.
Actually it is an example from the PHP.NET site. :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.