如何在php中将字符串转换为数组?

时间:2012-04-14 17:55:17

标签: php

这不是explode可以解决

我有几个数组

$order
data: {5,3,2}

$title,
data: {USA, England, China}

$attribute
Same idea 

$type
Same idea 

$ order已经存在一些价值 {5,3,2}和 对于每个都有相应的$ title,$ attribute,$ type值

eg. 5 USA  att5 type5

我想将顺序排序为{2,3,5},其他数组中的相应数据也将被排序。

eg. {2,3,5}

之后为数组$ title

{China, England,USA}

如何为所有阵列实现此功能?谢谢

我的想法是使用关联数组,我可以对键进行排序,一切都完成了。但是,我无法生成数组

我的想法阵列:

$records = array(5 => array("title" => "USA",   "att" => "add5"),
                 3 => array("title" => "England",  "att" => "add3"),
                 2 => array("title" => "China", "att" => "add2"));

5 个答案:

答案 0 :(得分:1)

在剧本上的这些行之后

$string = substr($string, 0, -1);
$records="array (".$string.");";

您可以添加

eval("\$records = $records;");

您可以在http://php.net/manual/es/function.eval.php阅读有关评估函数的信息,以及使用它时应该非常小心的原因

答案 1 :(得分:1)

其中一个explode是不够的,两个explode可以提供帮助;)

$records = Array();
foreach(explode("\n", trim($string)) as $line)
{
   list($order,$title,$attribute,$type) = explode(",", $line);
   $records[$order] = Array("title" => $title, "attribute" => $attribute, "type" => $type);
}
ksort($records);

答案 2 :(得分:1)

而不是从字符串转换为数组,您可以构建它

$result = array();
$countItem=0;
foreach ($order as $itemID)
{
     $result [$countItem] = array('id' => $itemID, 'title' => $title[$countItem],   'attribute' => $att[$countItem],'type'=>$type[$countItem]);
     $countItem++;
}

然后按ID

对其进行排序

答案 3 :(得分:1)

<?php

$order = array(5, 3, 2);    // or $order = array("5", "3", "2");
$title = array("USA", "England", "China");
$att = array("Att 1", "Att 2", "Att 3");
$type = array("Type 1", "Type 2", "Type 3");

$records = array();
foreach ($order as $i => $o) 
    $records[$o] = array("title" => $title[$i], "att" => $att[$i], "type" => $type[$i]);

ksort($records, SORT_NUMERIC);

print_r($records);

?>

答案 4 :(得分:1)

事情现在更清楚了 为此,我建议使用array_multisort http://php.net/manual/en/function.array-multisort.php