逗号分隔列表到一个对象数组,其值为php

时间:2013-04-12 05:42:01

标签: php arrays

我基本上只是试图摆脱这个:

$value="20, 40, 40" 
$color="blue, green, orange"

对此:

var data = [ { value: 20, color:"blue" }, { value : 40, color : "green" }, { value : 40, color : "orange" }]

所以我需要提取值和颜色添加把它们放在这个对象数组中。 我知道如果只需设置值就可以做到这一点,而不是使用explode和foreach设置颜色,但我不知道如何做到这一点需要两个值。

非常感谢任何想法。

谢谢,

大卫

3 个答案:

答案 0 :(得分:1)

explode两个数组,使用索引一次迭代两个,使用给定索引处的两个数组中的值来创建object / tuple / whatever,并且当它们将它们存储在{{ 1}}。

答案 1 :(得分:1)

这样做

$value="20, 40, 40"; 
$color="blue, green, orange";


$explVal = explode(",", $value);
$explCol = explode(",", $color);

$arr = array();

for ($i=0; $i<count($explVal); $i++)
{
    $arr[$i]['value'] = $explVal[$i];
    $arr[$i]['color'] = $explCol[$i];
}

然后做

$result =     json_encode($arr);

答案 2 :(得分:0)

那么每个值中是否总会有相同数量的值?

$value="20, 40, 40";
$color="blue, green, orange";

$values = explode(", ",$value);
$colors = explode(", ",$color);

$output = 'var data = [ ';
for($i = 0; $i < count($values) &&  $i < count($colors); $i++){
  $output .= '{ value: '.$values[$i].', color:"'.$colors[$i].'" }, ';
}
$output = substr($output,0,-2);
$output .= ']';

echo $output;

结果是:

var data = [ { value: 20, color:"blue" }, { value: 40, color:"green" }, { value: 40, color:"orange" }]