Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将数组转换为字符串格式_Php_Arrays_String_Arraylist - Fatal编程技术网

Php 如何将数组转换为字符串格式

Php 如何将数组转换为字符串格式,php,arrays,string,arraylist,Php,Arrays,String,Arraylist,我有一个数组的格式 数组({“2011-07-29”]=>39[“2011-07-30”]=>39[“2011-07-31”]=>39[“2011-08-01”]=>40} 我需要将它转换成如下的字符串格式(下面是一个var_转储结果) 字符串(584)“[新日期(2011,07,29),39],[新日期(2011,07,30),39],[新日期(2011,07,31),39],[新日期(2011,08,01),40]” 如果以前有人遇到过这个问题,我现在就要面对它了…首先,您需要在数组上循环,

我有一个数组的格式

数组({“2011-07-29”]=>39[“2011-07-30”]=>39[“2011-07-31”]=>39[“2011-08-01”]=>40}

我需要将它转换成如下的字符串格式(下面是一个var_转储结果)

字符串(584)“[新日期(2011,07,29),39],[新日期(2011,07,30),39],[新日期(2011,07,31),39],[新日期(2011,08,01),40]”


如果以前有人遇到过这个问题,我现在就要面对它了…

首先,您需要在数组上循环,并使用
parse_date
解析每个日期。一旦将日期设置为可用格式,就可以构建新字符串。

尽管这不是直接的方法。尝试在数组上使用
json\u encode()
,并按摩输出。

我能想到的最简单的方法:

<?php

$input = array(
    '2011-07-29' => 39,
    '2011-07-30' => 39,
    '2011-07-31' => 39,
    '2011-08-01' => 40,
);

$aux = array();

foreach($input as $date => $number){
    $aux[] = sprintf('[new Date(%s),%d]', str_replace('-', ',', $date), $number);
}

$output = implode(', ', $aux);

var_dump($input, $output);

编辑:经过改进以匹配@Alvaro答案的更好特性(实际上完全相同,而且是先回答的),但使用更简单的字符串构建(我发现sprintf是一个不必要的抽象层)


<?php
    $a = Array("2011-07-29" => 39, "2011-07-30"=> 39, "2011-07-31"=> 39, "2011-08-01"=> 40);
    $sa = array();
    foreach($a as $k => $v){
        $sa[] = "[new Date(".preg_replace('/-/',', ',$k)."),$v]";
    }
    $s = implode(', ',$sa);
    var_dump( $s );
?>
<?php
    $input = array(
        '2011-07-29' => 39,
        '2011-07-30' => 39,
        '2011-07-31' => 39,
        '2011-08-01' => 40,
    );
    $aux = array();
    foreach($input as $date => $number){
        $aux[] = "[new Date(" . str_replace('-',', ',$date) . "),$number]";
    }
    $output = implode(', ', $aux);
    var_dump($input, $output);
?>