我如何将逗号分隔列表转换为方括号数组

时间:2014-12-02 08:32:05

标签: php

我有这个变量$csv = '3,6,7,8';,我需要转换为$csv_array = [3,6,7,8];

形式的方括号数组

如果我像$new_array=explode(",",$csv);一样爆炸csv,它就不会给我想要的数组。

这是一个正在运行的示例http://3v4l.org/kYC0g

代码

$csv = '3,6,7,8';
$new_csv = '['.$csv.']';

if(is_array($new_csv)){
echo 'true';
}
else{
echo 'false';
//this is false
}

echo '<br/>';
$new_array=explode(",",$csv);

print_r($new_array);
//not what i am looking for

echo '<br/>';

print_r($new_csv);

echo '<br/>';

echo $new_csv;

2 个答案:

答案 0 :(得分:1)

如同堆垛机所述

  

RichardBernards - 两种类型&#39;数组在PHP中完全相同。如果您正在寻找JSON

使用JSON来实现您所需要的一个示例:

编码

$csv = '3,6,7,8';
$array = explode(",", $csv);
$json = json_encode($array);

echo $json;

解码 $csv进入您提供的正常数组:

$decoded = json_decode($json, true);
var_dump($decoded);

然后将其恢复为原始格式:

$csv = implode(',', $decoded);

有关详细信息,请参阅json_encode(),另请参阅json_decode()

请记住,JSON实际上是一个字符串,并且在使用上面提到的json_decode()函数解码之前,它在PHP中是不兼容的。话虽如此,在上面的示例中用true替换false会创建一个对象数组,而多维数组则需要以不同方式引用它们,例如$array->result

值得注意的是PHP中预定义CSV functions的美丽

答案 1 :(得分:0)

[]添加到字符串不会使其成为PHP数组。

$csv = '3,6,7,8';
var_dump(explode(',', $csv));

array(4) {
  [0]=>
  string(1) "3"
  [1]=>
  string(1) "6"
  [2]=>
  string(1) "7"
  [3]=>
  string(1) "8"
}

这等于PHP数组的["3", "6", "7", "8"]

要从中获取JSON数组,请使用json_encode(explode(',', $csv))。或者只是$jsonArray = "[{$csv}]"如果你需要JSON数组(不是PHP数组,因为它将是简单的字符串)。