PHP Json不会保存完整的数组

时间:2015-10-01 07:02:31

标签: php arrays json string

    if(isset($_POST['button'])) {

        $myfile = fopen("test.txt", "w") or die("Cannot open!");
        $txt = '';
        foreach($result_set as $result) {
            $asd = $txt.json_encode($result['firstname']);
            echo $asd;
        }

        fwrite($myfile, $asd);
        fclose($myfile);
}

我得到了这个json,但它只在.txt中保存了一个名字而不是所有名字,但如果我回应

  

$ ASD

它显示了我所有的名字。

我该如何解决这个问题?

编辑:(result_set)

// DB
$db = DBWrapper::getInstance();  
#Selecting data
$table = "staff";
$columns = array("id", "firstname");
$whereDish  = array('categorie_bit = :idDish');
$valuesDish = array('idDish' => 10);

#random select
$whereRand  = array('categorie_bit = :idRand');

$orderbyrandom = array('RAND()');
$result_set = $db->select($table, "*", $whereDish, $valuesDish, $orderbyrandom, 10);

3 个答案:

答案 0 :(得分:0)

因为你一次又一次地写作$ asd。

试试这个。初始化$asd = ''

并且在foreach附加到$ asd

$asd .= $txt.json_encode($result['firstname']);

答案 1 :(得分:0)

为什么不简单地说:

<?php
    if( isset( $_POST['button'] ) ) {
        $txt = '';
        foreach( $result_set as $result ) {
            file_put_contents( 'test.txt', $txt . json_encode( $result['firstname'] ), FILE_TEXT | FILE_APPEND );
        }
    }
?>

或者,也许我认为你打算(因为单个名称上的json_encode可能不会产生任何有用的东西 - 只是引号内的一系列名称而不是json对象)

<?php
    if( isset( $_POST['button'] ) ) {
        $tmp=array();
        $txt = '';

        foreach( $result_set as $result ) {
            $tmp[]=$txt . $result['firstname'];
        }
        file_put_contents( 'test.txt', json_encode( $tmp ), FILE_TEXT | FILE_APPEND );
    }
?>

答案 2 :(得分:0)

您可以使用以下代码:

<?php
    if( isset( $_POST['button'] ) ) {

        private $txt;
         $txt = "\n";
        foreach( $result_set as $result ) {
            file_put_contents( 'test.txt', $txt . json_encode( $result['firstname'] ), a );
        }
    }
?>